The following code works as expected except for 1 thing. The exercise in C++ Programming: Principles and Practice using C++ states the the computer should guess the user number in 7 attempts or less. Currently 8 is my best so far. I am not a student doing homework. I am an older guy self teaching. I am happy with this answer but wondering if someone can tell me what is wrong with the logic.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include<cmath>
int number = 0;
char answer;
int min = 0;
int max = 100;
int average = 0;
int x = 0;
int main()
{
std::cout << "Enter an integer number" << '\n';
std::cin >> number;
x = number;
int guess_number = 0;
while (x >= 0 && std::cin >> answer)
{
guess_number++;
std::cout << "Average =\t" << average << '\n'
<< "Min =\t\t" << min << '\n'
<< "Max =\t\t" << max << '\n'
<< "x =\t\t" << x << '\n'
<< "This is guess number " << guess_number << '\n';
average = (max + min) / 2;
std::cout << "Is your number higher or lower than " << average << '\n'
<< "Answer:\th = higher\n\tl = lower" << '\n';
switch (answer)
{
case 'h':
if (x == average) { std::cout << "This is your number" << '\n'; }
else if (x >= average)
{
average = (max + min) / 2;
max = max;
min = average;
}
break;
case 'l':
if (x == average) { std::cout << "This is your number" << '\n'; }
else if (x <= average)
{
average = (max + min) / 2;
max = average;
min = min;
}
break;
}
}
}```