например, нужно ввести правильный символ, и если ввели, цикл 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;
}
Другие языки программирования и технологии
Хорошо ли использовать бесконечный цикл for в C++?
Это спорный вопрос. Макконнелл считает, что если в цикле всего один 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";
}
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";
}
Тимур Байкелев
Вот у кого знания!
При чём тут хорошо/плохо? Есть куча ситуаций, когда без него не обойтись. нпрм, чтение неизвестного числа записей
Сергей Иванов
А почему обычный while не подойдет?
В данном случае все нормально, это просто проверка правильности ввода. И это не бесконечный цикл - при правильном вводе он прерывается.
В принципе, бесконечных циклов стараются избегать... Но, альтернативой тут будет, походу, что-то типа "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)
Я бы, правда, добавил сюда еще,
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)
Владимир Баландин
Учите индийский код. И творчество, и возможность заработать
Бесконечные циклы можно использовать если есть условие выхода, а то программа никогда не завершится
Меня смущает использование for, Не легче ли использовать цикл с условием, while или do while и написать условие там, тогда вы обойдётесь без if и break
Меня смущает использование for, Не легче ли использовать цикл с условием, while или do while и написать условие там, тогда вы обойдётесь без if и break
normalno
Похожие вопросы
- Объясните чайнику на пальцах: Как работает цикл (for) в C# ?
- C++. В операторе switch нельзя разве использовать case x? а x пробежать в цикле for?
- Объясните тему Циклы, а пальцах? C++
- Вопрос по трассировке цикла со вложенностью. C++
- Цикл for в Дельфи или Паскале
- *.bat - Не работает set /a внутри цикла for!
- Вопрос по стилю в Си. Читаю C Elements of Style (Steve Qualline), встретила такой стиль записи цикла for
- Выход из бесконечного цикла С++
- Вопрос про цикл For
- По-человечески объясните цикл "for"