As an exercise, I'm trying to make a program where the computer tries to guess which number I am thinking of. I am able to make it give random guesses in general but I want to make it able to guess the right number more quickly by recording it's highest and lowest guesses and making new guesses in-between those. Is this possible and if so what am I doing wrong?
int main()
{
char yesOrNo;
char lowOrHigh;
srand(time(NULL));
int random_number = 1+(rand() % 100);
int lowestGuess(random_number);
int highestGuess(random_number);
int adjustMinMax(int random_number, int& highestGuess, int& lowestGuess);
int adjustGuess(int& random_number, char lowOrHigh, int lowestGuess, int highestGuess);
cout << "Think of a random number between 1 and 100 in your head.";
cout << endl << "Is your number " << random_number << "?";
cout << endl << "y/n: ";
cin >> yesOrNo;
while (yesOrNo == 'n' || yesOrNo == 'no')
{
cout << "Ok then :( " << endl;
cout << "Was my guess too low or too high (l/h)? ";
cin >> lowOrHigh;
adjustGuess(random_number, lowOrHigh, lowestGuess, highestGuess);
adjustMinMax(random_number, highestGuess, lowestGuess);
cout << endl << "Is your number " << random_number << " ? ";
cin >> yesOrNo;
}
cout << "Hooray! :)";
return 0;
}
int adjustGuess(int& random_number, char lowOrHigh, int lowestGuess, int highestGuess)
{
if (lowOrHigh == 'l')
{
random_number = ((lowestGuess+1) + rand() % 100);
}
if (lowOrHigh == 'h')
{
random_number = (lowestGuess+1)+rand() % (highestGuess-1);
}
return (random_number);
}
int adjustMinMax(int random_number, int& highestGuess, int& lowestGuess)
{
if (random_number > highestGuess)
{
return(highestGuess = random_number);
}
if (random_number < lowestGuess)
{
return(lowestGuess = random_number);
}
}
Aucun commentaire:
Enregistrer un commentaire