Существует ли допустимое "условие" для которого 3 показанных кода неэквивалентны? - C (СИ)
Формулировка задачи:
1. Существует ли допустимое "условие" для которого 3 показанных кода неэквивалентны?
- думаю, что нет, не существует. Но в Си столько "фокусов"...
2. Это тот же вопрос другими словами. Всегда ли можно обойтись любым из 3 операторов for, while или do-while, не привлекая двух других операторов?
- думаю, что всегда. for и while полностью взаимозаменяемы, а do-while можно заменить любым из них по типу
Язык - C/C++ ну или другой Си-подобный, разрешены break и continue.
В общем, задали такой вот вопрос, а что думают гуру?
while (условие) {
//тело цикла
}
do {
if (!условие) break;
//тело цикла
} while (1);
for (;условие;) {
//тело цикла
}do {
//тело цикла
} while (условие);
на
for (;;) {
//тело цикла
if (!условие) break;
}
и
while (1) {
//тело цикла
if (!условие) break;
}Решение задачи: «Существует ли допустимое "условие" для которого 3 показанных кода неэквивалентны?»
textual
Листинг программы
while True: body() if condition(): break
Объяснение кода листинга программы
В представленном коде есть три части:
- Бесконечный цикл while True, выполняется до тех пор, пока условие не станет ложным.
- Функция body() выполняется в каждой итерации цикла.
- Функция condition() проверяется в каждой итерации цикла. Если она возвращает истину, то цикл продолжается, если ложь - цикл прерывается. Список кода:
- while True:
- body()
- if condition(): break Обратите внимание, что номер 2 повторяется дважды, поскольку функция body() вызывается дважды в каждой итерации цикла.