Капитан Гугл
Искусственный Интеллект
(146261)
9 лет назад
Это спорный вопрос. Макконнелл считает, что если в цикле всего один break (или если они логически сгруппированы в одном участке), то нормально. Единственное что - лучше делать while( true ), а не for(;;), так понятнее и логичнее.
while( true ) {
cout << "Введите оператор: ";
cin >> operation;
if (operation.size()==1 && string("+-*/").find(operation[0]) != string::npos ) {
break;
}
cout << "Вы ввели неверный оператор! \n";
cout << "Значения операторов\t+ - сложить\n\t\t\t- - вычесть\n\t\t\t* - умножить\n\t\t\t/ - разделить\n";
}
Dark wave
Просветленный
(44497)
9 лет назад
В принципе, бесконечных циклов стараются избегать... Но, альтернативой тут будет, походу, что-то типа "GoTo", что еще хуже...
Я бы, правда, добавил сюда еще,
cout << "Введите оператор (+ - / *) или exit для выхода: "
ну и первым if-ом, что-то типа if (operation == "exit") и выход...
--------------
Или, как вариант, цикл do while с условием "в конце"... до тех пор, пока не введут то, что требуется, крутить его
что-то в таком духе...
bool blnIsDo = false;
do{
cout << "Введите оператор (+ - / *) или exit для выхода: "
cin >> operation;
blnIsDo = operation != "+" && operation != "-" и т. д.;
if(blnIsDo)
{
cout << "Вы ввели неверный оператор! \n";
cout << "Значения операторов\t+ - сложить\n\t\t\t- - вычесть\n\t\t\t* - умножить\n\t\t\t/ - разделить\n";
}
} while(blnIsDo)
Павел Михаловский
Просветленный
(39523)
9 лет назад
Бесконечные циклы можно использовать если есть условие выхода, а то программа никогда не завершится
Меня смущает использование for, Не легче ли использовать цикл с условием, while или do while и написать условие там, тогда вы обойдётесь без if и break
for (;;)
{
cout << "Введите оператор: ";
cin >> operation;
if (operation != "+" &&
operation != "-" &&
operation != "/" &&
operation != "*")
{
cout << "Вы ввели неверный оператор! \n";
cout << "Значения операторов\t+ - сложить\n\t\t\t- - вычесть\n\t\t\t* - умножить\n\t\t\t/ - разделить\n";
}else break;
}