0
Когда я даю неправильный ввод, как строка «abx», он дает мне сообщение об ошибке, но не возвращается в цикле или не попросит меня повторить попытку. Этот пример приведен из примера курса Google C++ 4.Почему эта программа не входит в цикл?
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int isecret, iguess, chance;
srand(time(NULL));
isecret = rand() %100 + 1;
cout<<"Enter integers between 1 to 100"<<endl;
//cout<<isecret<<endl;
chance = 0;
do{
if (!(cin>>iguess))
{
cout<<"please enter integers between 1 to 100"<<endl;
cin.clear();
cin.ignore(10000/'\n');
}
else
{
if (isecret>iguess)
{
cout<<"Your guess is less than the secret"<<endl;
}
else if (isecret<iguess)
{
cout<<"Your guess is more than the secret"<<endl;
};
chance = chance + 1;
}
}
while(iguess!=isecret);
cout<<"Congratulation you guess the correct number: "<<isecret<<" in "<<chance<<" chances"<<endl;
return 0;
}
Можете ли вы быть более конкретными с вашим вопросом? Непонятно, что вы спрашиваете. Что ты пытаешься сделать? –
поэтому, когда я запускаю программу, она запрашивает у меня вход (который должен быть целым). Теперь предположим, что если я не помещаю целое число, тогда я запускаю первый «if-conditional», который просит меня ввести действительный ввод. Теперь я ожидаю, что программа снова перенаправит меня, чтобы ввести новый вход, но вместо этого он стоит на месте. Я хочу отреагировать на это. –
Я не уверен, что вы подразумеваете под «стоять на месте» в этом контексте. Но одна вещь, которая может помочь, - добавить некоторые отладочные сообщения. Например, поставьте 'cout <<" Выполнение блока, который делает ... "' в разных местах вашего кода. Затем вы можете точно видеть, как работает ветка. Вы также можете сделать это с помощью отладчика. –