I was wondering if anybody can take a look real quick, I have it so the user has to guess a generated number from 1 - 100, and everything works until the user runs out of "guesses" using the variable 'count'. I have the entire code within a do-while statement and a while statement within to check the guesses for 'count'. Whenever I try to enter the 'ans' for the do-while to take effect, it repeats
cout << "Sorry, you ran out of tries, would you like to try again? (Y / N): ";
cin >> ans;
over and over again, instead of restarting the game with 'y' or ending the game with 'n'. Any ideas?
#include <iostream>
#include <cstdlib>
#include <time.h>
usingnamespace std;
int main()
{
char ans;
do
{
srand((unsigned)time(0));
int answer;
for (int i = 0; i < 1; i++)
{
answer = (rand()%100)+1;
}
//Rules of the game
cout << endl << "===========================================\n";
cout << " Guessing Game Rules\n";
cout << endl << "The program will simply generate 1 - 100\n";
cout << "randomly targeting 1 number for the player\n";
cout << " to try and guess the correct number.\n";
//Begin the game
cout << endl << "===========================================\n";
cout << endl << " Points\n";
cout << endl << "Try and guess the correct answer the least\n";
cout << "as you can to earn more points and a title!\n";
int count = 0;
int num;
int point = 100;
cout << endl << "The program has generated a number!\n";
cout << "What is the generated digit? ";
cin >> num;
//Calculate point + count
while (num > answer || num < answer)
{
if (num > answer && count < 5)
{
point -= 5;
count += 1;
cout << endl << "That is not the right answer!\n";
cout << endl << "You have guessed too high! -5 pts\n";
cout << "What is the generated digit? ";
cin >> num;
}
elseif (num < answer && count < 5)
{
point -= 5;
count += 1;
cout << endl << "That is not the right answer!\n";
cout << endl << "You have guessed too low! -5 pts\n";
cout << "What is the generated digit? ";
cin >> num;
}
else
{
cout << "Sorry, you ran out of tries, would you like to try again? (Y / N): ";
cin >> ans;
}
}
if (num == answer)
{
point -= count * 5;
cout << endl << "Congradulations! You have guessed the right number!\n";
cout << endl << "It took you " << count << " tries! Total Points: " << point;
}
//Titles
if (count >= 8 )
{
cout << endl << "Try improving your luck and come try again!\n";
}
elseif (count >= 6)
{
cout << endl << "You are very renowned!\n";
}
elseif (count >= 4)
{
cout << endl << "You are the guessing master!\n";
}
else
{
cout << endl << "You are now the god of prediction!\n";
}
cout << endl << "Would you like to continue? (Y / N): ";
cin >> ans;
}
while (ans == 'Y' || ans == 'y');
cout << endl << "Thanks for playing the guessing game! Good bye!\n";
}
#include <cctype>
// ...
char ans = 'y' ;
while (ans == 'y' && (num > answer || num < answer))
{
if (num > answer && count < 5)
{
point -= 5;
count += 1;
cout << endl << "That is not the right answer!\n";
cout << endl << "You have guessed too high! -5 pts\n";
cout << "What is the generated digit? ";
cin >> num;
}
elseif (num < answer && count < 5)
{
point -= 5;
count += 1;
cout << endl << "That is not the right answer!\n";
cout << endl << "You have guessed too low! -5 pts\n";
cout << "What is the generated digit? ";
cin >> num;
}
else
{
cout << "Sorry, you ran out of tries, would you like to try again? (Y / N): ";
cin >> ans;
ans = tolower(ans) ;
}
}
Although you need to do something with the innards of the loop or you're just going to get "Sorry you ran out of tries" every iteration once you've indicated you want to try again.