Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Demon On Wheels Просветленный (31387), закрыт 9 лет назад
например, нужно ввести правильный символ, и если ввели, цикл 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;
}
Лучший ответ
Капитан Гугл Искусственный Интеллект (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";
}
Demon On WheelsПросветленный (31387) 9 лет назад
Вот у кого знания!
Остальные ответы
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)
Батаев ДмитрийПросветленный (23309) 9 лет назад
Учите индийский код. И творчество, и возможность заработать
Алекс Куха Высший разум (478937) 9 лет назад
При чём тут хорошо/плохо? Есть куча ситуаций, когда без него не обойтись. нпрм, чтение неизвестного числа записей
Капитан ГуглИскусственный Интеллект (146261) 9 лет назад
А почему обычный while не подойдет?
Алекс Куха Высший разум (478937) потому что не всегда корректно по условию ставить while(eof(f)) любой перебор с неизвестной глубиной. нпрм перебор файлов в папке
Павел Михаловский Просветленный (39523) 9 лет назад
Бесконечные циклы можно использовать если есть условие выхода, а то программа никогда не завершится
Меня смущает использование for, Не легче ли использовать цикл с условием, while или do while и написать условие там, тогда вы обойдётесь без if и break
Jurijus Zaksas Искусственный Интеллект (475731) 9 лет назад
В данном случае все нормально, это просто проверка правильности ввода. И это не бесконечный цикл - при правильном вводе он прерывается.
Похожие вопросы