Today I had my first exam in c++ in uni – I study computer science – and I didn’t get it all right, because the time was too short and I had to write some long code to do simple tasks.
So it was a card game simulation with all kind of different methods.
First problem:
We should compare the point values of each player’s card to determine the highest, which are all stored in a player class object as a vector class data element. What I did was: get the card, store the value in an int and then compare all like this:
if(a > b && a > c && a > d){...
… and I had to do this four times.
Is there a better way to do this ? If not, maybe an easier way to compare the integers ?
Second problem:
If you look at this you’ll probably know what the problem is
int id0 = players[0].getID();
int bd0 = players[0].getBudget();
int id1 = players[1].getID();
int bd1 = players[1].getBudget();
int id2 = players[2].getID();
int bd2 = players[2].getBudget();
int id3 = players[3].getID();
int bd3 = players[3].getBudget();
stringstream players;
players << "Player's ID" << setw(10) << "Budget" << endl;
players << "-----------" << setw(10) << "------" << endl;
players << id0 << setw(20) << bd0 << endl;
players << id1 << setw(20) << bd1 << endl;
players << id2 << setw(20) << bd2 << endl;
players << id3 << setw(20) << bd3 << endl;
return players.str();
I can’t figure out why the functions above didn’t work in the stringstream directly! The compiler kept telling me that sstream doesn’t support the [] operator, even though it worked in other methods.
Your second problem is that you reused the variable name:
Why would you expect the compiler to be able to figure out that the first
playersinplayers << playersis the string stream but the second is the earlier declared variable?In the first problem you might make your comparisons simpler in a number of ways.
This does the same thing as your code (including not handling ties), but is a little easier to read. Or you could do:
This handles ties by executing the if condition for all players with the highest score. Or you could do:
Although this again does not handle ties well; it just picks a winner from among the top scorers. You can also do:
This handles ties by rewarding every player that matched the top score.