Hey guys, I tried to create a program which guesses the number of the user and by asking if the guessed number is below or above the users number the computer will create a new guess. Works perfect only has a problem, which is that the programm cant guess max=100. I tried to do it with double, but this also takes 21 guesses, which is quite high. Is there any other way i can better my function?
#include <iostream>
usingnamespace std;
int choice, x, nmbr;
int guess (int&, int&);
int main(){
int max =100;
int min=1;
cout << "The computer will guess your number" << endl;
do{
nmbr = guess(min, max);
x++;
cout << "Is your Number: " << nmbr << "?" << endl;
cout << "Its your number=0, too low=1, too high=2" << endl;
cin >> choice;
if(cin.fail()){
cout << "Invalid input!" << endl;
return 1;
}
if(choice ==1){
cout << "Number is too low - generating new number under " << nmbr << endl;
min = nmbr;
}elseif(choice == 2){
cout << "Number is too high - generating new number above " << nmbr << endl;
max = nmbr;
}
}while(choice != 0);
cout << "Right number was guessed!\nTries: " << x << "\nExecuting Programm" << endl;
return 0;
}//end main()
int guess(int& var1, int& var2){
return ((var2-var1)/2)+var1;
}
Assuming that you are only allowing the values from 1 - 100 any number can be guessed correctly within 7 guesses. This is possible by simply eliminating half of the remaining numbers with each guess. For example the user enters the number 24
Guess 1 = 50; --> too high
Guess 2 = 25; --> too high
Guess 3 = 13; --> too low
Guess 4 = 19; --> too low
Guess 5 = 22; --> too low
Guess 6 = 23; --> too loe
Guess 7 = 24; --> Correct
Another example the user enters the number 76
Guess 1 = 50; --> too low
Guess 2 = 75; --> too low
Guess 3 = 86; --> too high
Guess 4 = 80; --> too high
Guess 5 = 77; --> too high
Guess 6 = 76; --> correct
If you adjust your logic to this, you will be guaranteed to guess the number in 7 or less. The same logic could be used for more, but the number of guesses required may change.