Интересная задачка на C++

Правка ru2, от BekzhanKassenov, 2016-11-23 04:07:36

Привет, сообщество CodeForces!

Недавно вспомнил одну интересную задачу на C++. Если кратко: можно ли написать такие функции action и cond так, чтобы следующие куски кода работали по-разному:

// Snippet #1:
action();
while (cond()) {
    action();
}
// Snippet #2:
do {
    action();
} while (cond());

Более формально: у вас есть следующие три файла:

common.h
main_while.cpp
main_do_while.cpp

Вам разрешено менять лишь common.h. Сделайте это так, чтобы слово Action напечаталось разное количество раз для запусков main_while.cpp и main_do_while.cpp.

Одно из возможных решений (настоятельно рекомендуется сначала подумать самостоятельно!):

Dirty hack

Скидывайте свои решения в комментариях, не забывайте прятать под спойлеры! Было бы интересно посмотреть на более умные решения (например на такие, которые будут применимы в любом языке, где есть аналоги while и do-while).

Теги c++, интересные задачи, грязный хак

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
ru2 Русский BekzhanKassenov 2016-11-23 04:07:36 69 (опубликовано)
en1 Английский BekzhanKassenov 2016-11-23 04:01:35 1901 Initial revision for English translation
ru1 Русский BekzhanKassenov 2016-11-23 03:50:05 1829 Первая редакция (сохранено в черновиках)