Hi, looking back at your previous posts it look like you are trying to get a quick prog to roll 5 dice, then have 3 rounds of accept or re-roll each die to try an maximise the score.
I am relativly new to C++, but have been programming (mainly Delphi) for many years now, and one 'rule' I try and stick to is to keep things as simple as possible - it seems to work for C++ too!
(Another 'rule' is that rules are guidelines not absolutes:-)
I would make a few mods to the code you have in order to put it into a function (or, to be more exact, a bunch of functions).
Where you have the same (or very similar) code repeated it is often the sign that it would be a good chunk to split out as a function - in you code, for example, for the 5 dice you have virtualy the same code to keep or discard the roll - if you pull this out the code become much shorter, and as a result easier to follow.
I would also stick to just the single int array - there is no need for the vector or second array, so why add complexity?
You can also use the NUMDICE constant for declaring the array, loop boundaries, etc, which both helps show what is intended and make changing the code easier.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
const int NUMDICE = 5;
const int NUMSIDES = 6;
int myRoll[NUMDICE];
int getScore(void)
{
int score=0;
for(int i =0; i < NUMDICE; i++)
{
score = score + myRoll[i];
}
return score;
}
void displayRoll(void)
{
for(int i =0; i < NUMDICE; i++)
{
cout << myRoll[i];
}
cout << endl;
return;
}
bool keep(int i)
{
char keepin;
cout << "\nKeep dice " << i+1 << " ?" << endl;
cin >> keepin;
return (toupper(keepin)=='Y');
}
void rollTheDice()
{
srand((unsigned)time(NULL));
for(int i = 0; i < NUMDICE; i++)
{
myRoll[i] = (rand() %NUMSIDES) +1;
}
for (int j=0; j<3; j++)
{
displayRoll();
cout << "Score: " << getScore() << endl;
for(int i = 0; i < NUMDICE; i++)
{
if (!keep(i))
{
myRoll[i] = (rand() %NUMSIDES) +1;
}
}
}
displayRoll();
cout << "Score: " << getScore() << endl;
}
int main()
{
rollTheDice();
system("pause");
return 0;
}
| |
Hope that helps -