Я - любительский практикующий код в C++, и я не могу заставить свой код работать правильно. Я надеюсь, что кто-то может найти мою проблему или указать мне в правильном направлении.
Я просто пытаюсь создать меню switch/case для пользователей. Я бы хотел, чтобы они не могли вводить какие-либо неправильные значения в качестве входных данных. единственные правильные значения - 1,2,3 или 4. Если введены какие-либо более низкие, более высокие или нечисловые значения, я бы хотел, чтобы они застревали в цикле, пока они не введут правильное значение.
Моя проблема с моей рабочей проверкой ошибок заключается в том, что когда они действительно вводят правильные значения, они все еще застревают в цикле?! Я попытался переставить мой код, но затем ошибка снова взорвет мою программу.
Спасибо за любой совет, ввод кода и т.д. Я понятия не имею, почему он не работает !!!
И по соответствующей заметке. У меня возникли проблемы с загрузкой моей загрузки jgrasp для работы C++, поэтому я загрузил компилятор с кодом code :: block. по какой-то причине он не может зарегистрировать команды системы ("")?! любые идеи или лучший компилятор будут оценены. Благодарю. о, и вот мой код для моей первой проблемы... после того, как код начинается с моего меню switch/case. Спасибо за любую помощь
int main()
{
string name;
int ans2, ans3, count = 0, extra, select = 1, arraycount = 0, choice;
bool flag = true;
cout << "Hello World" << endl;
cout << "Enter your name: ";
cin >> name;
cout << "Thank you for using this program " + name << endl;
while (select != 4)
{
cout << "MAIN MENU\n";
cout << "Please enter a corrisponding numeric for your selection.\n";
cout << "1. You are Michael...\n";
cout << "2. You are Tim\n";
cout << "3. You are someone else\n";
cout << "4. Program exit\n";
cout << "Enter your selection: ";
cin >> select;
do
{
while(!(cin >> select))
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Invalid input. Try again: ";
}
cout << "You entered: " << select << endl;
if (select != 1 && select != 2 && select != 3 && select != 4)
{
flag = false;
cout << "Error. Please enter a valid selection.";
cout << "Enter your selection";
cin >> select;
}
else
flag = true;
}while(flag == false);
cout << "\n\nThank you for your choice\n";
//system("pause");
//system("cls");
эта часть вашего кода,
if (select != 1 && select != 2 && select != 3 && select != 4)
{
flag = false;
cout << "Error. Please enter a valid selection.";
cout << "Enter your selection";
cin >> select;
}
эта часть может быть причиной вашей проблемы при повторном вводе выбора, но вы не изменяете значение флага. Вы можете добавить проверку, while(!(cin >> select))
как
while(!(cin >> select) || select > 4 || select < 1)