Просто попытайтесь проверить, что вход является логической переменной (1 или 0) для этой проблемы.cin.fail while loop input Re-Entry
Однако, всякий раз, когда включается цикл while (то есть, не вводя 1 или 0), он просто проваливается и говорит, что условие истинно.
Я хотел бы, чтобы пользователь мог повторно ввести свой ввод после неправильного ввода. Как мне это сделать?
Мой код:
int main() {
bool a,b,c;
cout << "This program will determine the value of the condition !(a||b) && c " << endl;
cout << "Please enter boolean values for a, b, and c. (0=F, 1=T) ";
cin >> a;
while (cin.fail())
{
cin.ignore(1000,'|n');
cin.clear();
cout << "Error: Enter only 0 or 1" << endl;
cout << "Enter in a new value for a" << endl;
}
cin >> b;
cin >> c;
cout << "The condition !(xx||xx)&&xx ";
if(!(a||b) && c)
{
cout << "is true";
}
else
{
cout << "is false";
}
return 0;
}
Спасибо. Но, если я введу письмо, почему он бесконечно повторяет два выхода в моей консоли? Есть ли простой способ исправить это? – kpnd
@kpnd: в вашем вопросе была опечатка, а символ новой строки - это должно быть '' \ n'' не ''| n'' ... лучше исправить и повторить попытку. –
@TonyD спасибо за проверку. Тем не менее, моя проблема с бесконечным циклом при вводе чисел не сохраняется. Есть идеи? – kpnd