Поняли правильно, это обыкновенный двоичный поиск. Обычно он реализуется рекурсивно, можете посмотреть исполнение, например, в
Википедии.
Написать лучше тоже можно - с переносами строк и пробелами
выглядеть будет гораздо приятнее.
P.s. У вас 8 проходов цикла.
upd. Если предположить, что каждый вопрос (неважно какой) - это попытка, то можно ограничиться только семью вопросами. Например, так:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int min = 1, max = 100;
cout << "Загадайте число от " << min << " до " << max << ".\n";
int guess = (min + max) / 2, count = (int) ceil(std::log2(max - min));
for (int i = 0; i < count; ++i)
{
cout << "Загаданное число меньше или равно " << guess << "? (y/n)\n"; // fixed
char ans;
cin >> ans;
if (ans == 'y')
{
max = guess;
}
else
{
min = guess + 1; // fixed
}
guess = (min + max) / 2;
if (max == min) // fixed
{
cout << "Вы загадали число \"" << guess << "\".\n";
system("PAUSE");
return 0;
}
}
cout << "Жулик!\n";
system("PAUSE");
return 0;
}