Reputation: 33
Okay, so this is a part of my program which is basically a recurring error message to the user until a valid input is fed. So basically the issue I'm facing is that whenever I enter a number that is invalid (such as 0, 12 or a negative number), nothing will output and the program will await another input, only then will it identify the input as an error or a valid input. This is not a problem when a symbol or alphabet is input. Is there any workaround I can use?
while (Choice1 < 1 || Choice1 > 11)
{
if(!(cin >> Choice1), Choice1 < 1 || Choice1 > 11)
{
cin.clear();
cin.ignore(512, '\n');
cout << "\n\aError! Please enter a valid input!" << endl;
cout << "Now please enter the first code: ";
cin >> Choice1;
}
}
Upvotes: 2
Views: 86
Reputation: 5710
Perhaps this is what you intended:
#include <iostream>
#include <limits>
int main()
{
int Choice1{0};
while (!(std::cin >> Choice1) || Choice1 < 1 || Choice1 > 11)
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "Error! Please enter a valid input!" << std::endl;
std::cout << "Now please enter the first code: " << std::endl;
}
return 0;
}
You can read here and/or here about the comma operator which I didn't find to belong there as part of the conditional expression. Also, I don't think you really wanted that if
en-scoping the while
loop. I've made some additional small changes, leaving most of the original structure -- which still could use some work.
Upvotes: 1