Plan and code a guessing and betting number game, as described by the text below and the sample output but do not write any functions (other than main).

An appropriate welcome message with your name in it should be shown at the start of the program. The user starts with 100 dollars, and is able to bet and guess until they quit or have no more money. In each turn, they are asked for a bet. If they enter 0, then the program should give a farewell message and quit. The bet must be positive and within their available balance, but do not assume they will enter correctly. If they enter incorrectly, the program should set the bet to their balance and tell them this.

Once a bet is entered, they must pick a number between 1 and 10 (inclusive) (you do not need to error-check or correct this). This guess is then compared to a number the computer randomly generates each time (also between 1 and 10).

If the guess is correct, the user wins the amount of their bet. If the guess is incorrect, the user will lose their bet divided by 5 and multiplied by the distance from the correct number - e.g. if the bet is 50, the computer’s number is 5 and the user guesses 7, then the user will lose 20 dollars. However, they should not lose more than their balance, so if their balance is 50, the bet is 40, the computer’s number is 1 and the user guesses 10, then they should lose 50. (Don’t think this game has to be fair!)

After each turn, the program should display that turn's winnings (or loss amount) and the new balance, and then repeat the game until the user either quits or has no money left.

Dollar values should be formatted in the standard way with two decimal places and a $ in front. Sample output from the program is below. You should make your program match this exactly

Sample Output (this forms part of the requirements):
Guessing Game
Written by Lindsay Ward

Please enter your bet (up to $100.00): $50

Guess a number between 1 and 10: 5

Correct!
You win $50.00

Your new balance is $150.00

Please enter your bet (up to $150.00): $200
Your bet is $150.00

Guess a number between 1 and 10: 6

Wrong! The computer chose: 4
You lose $60.00

Your new balance is $90.00

Please enter your bet (up to $90.00): $80

Guess a number between 1 and 10: 1

Wrong! The computer chose: 7
You lose $90.00

Thank you for playing!
Press any key to continue . . .

Another Sample:

Guessing Game
Written by Lindsay Ward

Please enter your bet (up to $100.00): $-20
Your bet is $100.00

Guess a number between 1 and 10: 5

Wrong! The computer chose: 2
You lose $60.00

Your new balance is $40.00

Please enter your bet (up to $40.00): $10.50

Guess a number between 1 and 10: 12

Wrong! The computer chose: 2
You lose $21.00

Your new balance is $19.00

Please enter your bet (up to $19.00): $0
Thank you for playing!
Press any key to continue . . .

Dani AI

Generated

A compact, practical plan to finish this in a single main (as requested). already has the spec; is right to try it yourself — below are focused implementation tips, the exact arithmetic to use, and a tiny code fragment for the part that commonly trips people up.

Steps to implement (one loop in main):

  1. Use double for money (or store cents as an int if you prefer exact cents). Initialize balance to 100.00.
  2. Read the bet as a numeric value. If input fails (non-numeric) clear the stream and treat the bet as the current balance. If the user enters 0, exit politely.
  3. If the bet is <= 0 or greater than the balance, set the bet to the balance and inform the player.
  4. Read the guess as an integer (no extra validation needed per the assignment). Generate a random integer in [1,10] each turn.
  5. If the guess equals the random number, add the bet to the balance. Otherwise compute loss = min(balance, (bet/5.0) * abs(guess - secret)) and subtract it.
  6. Round monetary results to cents before printing to avoid tiny floating errors. Print amounts with two decimals and a leading dollar sign.

Core loss calculation and cent-rounding (drop this into main where appropriate):

double loss = std::min(balance, (bet / 5.0) * std::abs(guess - secret));
loss = std::round(loss * 100.0) / 100.0;
balance = std::round((balance - loss) * 100.0) / 100.0;
cout << fixed << setprecision(2) << "$" << loss << "\n";

Use a modern RNG in main (e.g., std::mt19937 + std::uniform_int_distribution<int>(1,10)) rather than rand() if your compiler supports C++11. See uniform_int_distribution and std::fixed/std::setprecision for formatting. Handle cin failures by clearing and discarding the rest of the line before continuing. For exact-money logic, storing cents as integers avoids all floating-point pitfalls. linked to a continuation of the thread for more back-and-forth if needed.

Recommended Answers

All 2 Replies

You've already a good thought of what your program should do, why not try implementing it yourself first?

commented: Right on target! +1
commented: Yuppers +18

"continued" here.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.