Другие языки программирования и технологии

Хорошо ли использовать бесконечный цикл for в C++?

например, нужно ввести правильный символ, и если ввели, цикл 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;
}
Это спорный вопрос. Макконнелл считает, что если в цикле всего один 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";
}
Сергей Смирнов
Сергей Смирнов
67 876
Лучший ответ
Тимур Байкелев Вот у кого знания!
При чём тут хорошо/плохо? Есть куча ситуаций, когда без него не обойтись. нпрм, чтение неизвестного числа записей
Илья Игнатов
Илья Игнатов
70 292
Сергей Иванов А почему обычный while не подойдет?
В данном случае все нормально, это просто проверка правильности ввода. И это не бесконечный цикл - при правильном вводе он прерывается.
Максим Чучалин
Максим Чучалин
61 115
В принципе, бесконечных циклов стараются избегать... Но, альтернативой тут будет, походу, что-то типа "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)
MG
Myktybek Gapyrov
44 098
Владимир Баландин Учите индийский код. И творчество, и возможность заработать
Бесконечные циклы можно использовать если есть условие выхода, а то программа никогда не завершится
Меня смущает использование for, Не легче ли использовать цикл с условием, while или do while и написать условие там, тогда вы обойдётесь без if и break
СХ
Сергей Ходин
28 644
normalno