Получение нескольких входных данных и их проверка С++ ⇐ C++
-
Anonymous
Получение нескольких входных данных и их проверка С++
У меня есть несколько перечислений, которые действуют как настройки программы. Я хочу брать их из пользовательского ввода один за другим и продолжать запрашивать пользовательский ввод при определенных настройках до тех пор, пока не будет получен действительный ввод, но я чувствую, что мой подход повторяет много кода. Есть ли лучший/более разумный способ сделать это?
Код:
#include #include enum Input1 {Тип1 = 1, Тип2 = 2, Тип3 = 3, Тип4 = 4}; перечисление Input2 {Тип11 = 5, Тип22 = 17}; bool validate_input(Ввод1, Ввод1, Ввод2, Ввод2 = Тип11) { if(input1 != Type1 && input1 != Type2 && input1 != Type3 && input1 != Type4) { вернуть ложь; } if(input2 != Type11 && input2 != Type22) { вернуть ложь; } вернуть истину; } интервал основной() { интервал iInput1, iInput2, iInput3; Вход1 eВход1; Вход2 eВход2; логический return_val; делать { std::cout > iInput1; если (std::cin.fail()) { станд::cin.clear(); std::cin.ignore(std::numeric_limits::max(), '\n'); } eВход1 = (Вход1) iВход1; return_val = validate_input(eInput1); если (!return_val) { std::cout iInput2; если (std::cin.fail()) { станд::cin.clear(); std::cin.ignore(std::numeric_limits::max(), '\n'); } еВход2 = (Ввод2) iВход2; return_val = validate_input(eInput1, eInput2); если (!return_val) { std::cout
У меня есть несколько перечислений, которые действуют как настройки программы. Я хочу брать их из пользовательского ввода один за другим и продолжать запрашивать пользовательский ввод при определенных настройках до тех пор, пока не будет получен действительный ввод, но я чувствую, что мой подход повторяет много кода. Есть ли лучший/более разумный способ сделать это?
Код:
#include #include enum Input1 {Тип1 = 1, Тип2 = 2, Тип3 = 3, Тип4 = 4}; перечисление Input2 {Тип11 = 5, Тип22 = 17}; bool validate_input(Ввод1, Ввод1, Ввод2, Ввод2 = Тип11) { if(input1 != Type1 && input1 != Type2 && input1 != Type3 && input1 != Type4) { вернуть ложь; } if(input2 != Type11 && input2 != Type22) { вернуть ложь; } вернуть истину; } интервал основной() { интервал iInput1, iInput2, iInput3; Вход1 eВход1; Вход2 eВход2; логический return_val; делать { std::cout > iInput1; если (std::cin.fail()) { станд::cin.clear(); std::cin.ignore(std::numeric_limits::max(), '\n'); } eВход1 = (Вход1) iВход1; return_val = validate_input(eInput1); если (!return_val) { std::cout iInput2; если (std::cin.fail()) { станд::cin.clear(); std::cin.ignore(std::numeric_limits::max(), '\n'); } еВход2 = (Ввод2) iВход2; return_val = validate_input(eInput1, eInput2); если (!return_val) { std::cout
Мобильная версия