Я написал код, который проверяет, вводит ли пользователь правильный тип ввода, используя цикл while. Проблема заключается в том, что после каждого неправильного символа, который вы вводите, он снова зацикливается.Почему этот цикл повторяется после каждого символа ввода?
Но когда вы вводите несколько символов, он повторяет те же самые cout
заявления снова и снова. Например, если я набрал «qwerty», он будет выводить эти операторы
cout` 6 раз, когда я хочу, чтобы он запускался один раз.
код ниже:
#include <iostream>
using namespace std;
int main(){
// Declare the variables
int choice = 0;
bool valid = false;
while(!valid){
valid = true;
//Ask the user for their choice
cout << "Which function would you like to use? \n";
cout << "1) Average Function \n";
cout << "2) Mean Absolute Deviation Function \n";
cout << "3) Number Sorting Function \n";
cout << "4) Median Function \n";
cout << "5) All of the above \n";
cout << "6) Calculator Function \n";
cout << "Your choice: ";
cin >> choice;
if(cin.fail() || choice > 6 || choice < 1){
cout << "ERROR, PLEASE ENTER ONLY VALID SYMBOLS \n";
cout << "--------------------- \n";
valid = false;
cin.clear();
cin.ignore();
}
}
}
Что вы обнаружили при выполнении этого кода в отладчике? –
Я не уверен, как использовать отладчик:/ – PeteMcGreete
@PeteMcGreete при отсутствии навыков отладчика, просто приклеивая несколько «куттов», поможет вам понять поток управления и значения переменных на определенных этапах выполнения программ , Конечно, стоит научиться использовать отладчик, хотя и быстрее, и вам не нужно возвращаться через ваш код, вырывая инструкции 'cout'. –