Мой основной алгоритм:
Попросите ввести сумму денег; Бросает два шестигранных кубика; если они добавляют до 7, добавьте 4 к сумме денег; иначе вычтите 1 из суммы денег; цикл до moneyamount<0
; Пользователь петлевой игры говорит n, когда ему предлагается снова играть.
/*
*File: hw3
*Author: Nathaniel Goodhue
*
*Created on: 9/15/15
*Description: Game of lucky sevens
*
*/
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
srand (time(NULL));
double moneyAmount;
int winValue = 7;
int numRolls = 0;
char playAgain = 'y';
while(playAgain == 'y')
{
cout<<"Enter the amount of money you are playing with: $";
cin>>moneyAmount;
while(moneyAmount>0)
{
int roll1= (rand()%6)+1;
int roll2 = (rand()%6)+1;
if(roll1+roll2 == winValue)
{
moneyAmount+=4;
numRolls++;
}
else
{
moneyAmount-=1;
numRolls++;
}
}
cout<<"It took "<<numRolls<<" roll(s) to lose all of your money"<<endl;
// cout<<"Your maximum amount of money was $" <<maxAmount<<" after "<<maxRolls<<" roll(s)"<<endl;
cout<<"Play again? y/n"<<endl;
cin>>playAgain;
if(playAgain == 'y')
{
cout<<"Enter the amount of money you are playing with: $";
cin>>moneyAmount;
numRolls = 0;
}
else
{
break;
}
}
return 0;
}
Выше мой текущий код. Работает как задумано. Я застрял в том, что мне нужно иметь возможность реализовать эту строку кода сразу после того, как деньги упадут ниже 0:
cout<<"Your maximum amount of money was $" <<maxAmount<<" after "<<maxRolls<<" roll(s)"<<endl;
Мне нужно выяснить, когда было больше всего денег и через сколько рулонов оно появилось. maxAmount
переменная будет максимальной суммой денег, а maxRolls
переменная будет количество рулонов, когда maxAmount
был достигнут
Это довольно просто добавить в ваш код. Что вы можете сделать, так это проверить, превышает ли сумма денег, которую они имеют, максимальную сумму. Если затем установить максимальное значение тока и записать количество оборотов, которое потребовалось для получения этого значения.
int maxAmount = moneyAmount, maxRolls = 0;
while(moneyAmount > 0)
{
int roll1 = (rand() % 6) + 1;
int roll2 = (rand() % 6) + 1;
numRolls++;
if(roll1 + roll2 == winValue)
moneyAmount += 4;
else
moneyAmount -= 1;
if (moneyAmount > maxAmount)
{
// the current amount of money is greater than the max so set max to current and get the number of rolls
maxAmount = moneyAmount;
maxRolls = numRolls;
}
}