Значение переменной input
никогда не изменяется в цикле, поэтому условие терминатор input != secretNumber
никогда не встречались.
Вы должны взять входной сигнал внутри цикла. Поэтому напишите cin >> input
в начале цикла.
Edit:
Если компьютер должен угадать, то до сих пор значение input
должно быть изменено в цикле, который не присутствует в вашем коде. Цикл работает с тем же значением в input
каждый раз.
Чтобы заставить вас сделать предположение, вы должны следовать какой-либо схеме. Компьютер может набирать цифры случайным образом - вы можете пройти через перемещение secretNumber = rand()%100 + 1
внутри цикла. Но этот подход может не работать хорошо, цикл может работать очень долго. Это показано в ответе @ Kaii.
Более эффективный подход - Binary Search. В этом случае вы должны следить за догадками, которые делает компьютер. Сохраняйте две переменные high
и low
, которые должны хранить догадки выше и ниже input
соответственно. Всякий раз, когда угадывайтесь выше номера, храните его в high
и сохраняйте любую догадки ниже input
в low
. Затем компьютер должен попробовать свое новое предположение между high
и low
. Случайное предположение должно быть secretNumber = low + rand() % (high - low)
. В худшем случае это займет целых 100 итераций. Для достижения наилучших результатов каждая догадка должна быть (high + low)/2
. В соответствии с условиями один из high
и low
будет обновляться на каждой итерации. Такой подход обеспечит, что компьютер угадает правильный номер в пределах 7 догадок.
В коде это должно быть так:
int secretNumber = rand() % 100 + 1; // random number between 1-100
int tries=0;
int input;
int low = 1, high = 100;
cout <<"typ your number\n";
cin >> input;
do
{
secretNumber = (high + low)/2;
cout << secretNumber <<endl;
++tries;
if (secretNumber > input)
{
cout << "Too high I guess?\n";
high = secretNumber;
}
else if (secretNumber < input)
{
cout << "Too low I guess?\n";
low = secretNumber;
}
else
{
cout << "Yes, i got it in " << tries << " tries!";
}
} while (input != secretNumber);
return 0;
Вы получаете только один номер от пользователя, затем вы сравниваете его снова и снова в своем цикле. Вероятно, вы должны запросить у пользователя число в цикле. –
Компьютер должен угадать ваш номер? .... Может быть, вам нужно угадать номер компьютера? Я в замешательстве, и так жалуются, кажется ... – user1096188
@ user1096188 ну, я уже сделал программу, где мне нужно угадать случайное число компьютеров. теперь я хотел бросить вызов себе и посмотреть, смогу ли я сделать это наоборот, оказалось, что я не могу – Stijn