I have a little guessing game from 1 - 100 and you have to guess the right number, but problem is, my assignment requires me to ask the user if the user wants to replay the game at the end, how would I go about doing so?
#include <iostream>
#include <cstdlib>
#include <time.h>
usingnamespace std;
int main()
{
srand((unsigned)time(0));
int answer;
for (int i = 0; i < 1; i++)
{
answer = (rand()%100)+1;
}
//Rules of the game
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)
{
cout << endl << "That is not the right answer!\n";
if (num > answer)
{
point -= 5;
count += 1;
cout << endl << "You have guessed too high! -5 pts\n";
cout << "What is the generated digit? ";
cin >> num;
}
else
{
point -= 5;
count += 1;
cout << endl << "You have guessed too low! -5 pts\n";
cout << "What is the generated digit? ";
cin >> num;
}
}
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";
}
}
while ((ans != 'Y')&&(ans != 'y')&&(ans != 'N')&&(ans != 'n'));
This will make the loop run again only if the user enters anything other than 'Y', 'y', 'N' or 'n'. You could change it to while (ans == 'Y' || ans == 'y');
or while (ans != 'N' && ans != 'n');
#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 << " 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)
{
cout << endl << "That is not the right answer!\n";
if (num > answer)
{
point -= 5;
count += 1;
cout << endl << "You have guessed too high! -5 pts\n";
cout << "What is the generated digit? ";
cin >> num;
}
else
{
point -= 5;
count += 1;
cout << endl << "You have guessed too low! -5 pts\n";
cout << "What is the generated digit? ";
cin >> num;
}
}
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): ";
}
while ((ans == 'Y')&&(ans == 'y'));
}
The problem is on line 89, the while statement is only true if ans is equal to both Y and y. However, ans cannot be 2 different characters at once. The pipe separator, ||, would solve this, allowing your program to repeat if ans is equal to Y or y.