Можно ли зациклить for?

Преподаватель заявил, что, если кто-то зациклит for (именно успешно зациклит, я так понимаю, т.е., чтобы программа работала и выполняла какие-то функции), то она поставит зачёт автоматом. Я, конечно, понимаю, что это безумно, но реально ли это? И если да, то как?


Ответы (8 шт):

Автор решения: Victor VosMottor

-like languages:

for (;;);

Ну и препод.

Python (source):

def zero_to_infinity():
    i = 0
    while True:
        yield i
        i += 1

for x in zero_to_infinity():
    print(x)
l = [1]
for x in l:
    l.append(x + 1)
    print(x)
→ Ссылка
Автор решения: Konstantin_SH

Ну, как-то так можно попробовать:

#include <iostream>
int main () {

int j =1;

for (int i = 0; i!=j; ++i){
std::cout << "Гони зачет!" << endl;
i =0; 

}

return 0;
}

→ Ссылка
Автор решения: CrazyElf

Поскольку язык программирования пока неизвестен, то пусть будет Python:

for _ in iter(int, 1): 
    pass
→ Ссылка
Автор решения: gbg

Давайте ее удивим и завесим программу с пустым main();

struct A
{
    A(){for(;;);}
};

static A a;

int main() 
{
    return 0;
}

Так можно нарисовать лабиринт:

#include <iostream>
struct A
{
    A(){for(;;std::cout<<(1&rand()?'\\':'/'));}
};

static A a;

int main() 
{
    return 0;
}

\//\\\\/\/\\\\\\//\//\//\///\//\\\////\\///\//\/////\//\\\\/\/\/\
/\\//\//\//\\//\\//\\\//\\\\////\\/\/\\/\/\//\\\/\\\\\\///\\/\\\/
//\\/\//////\///\\\//\\///\\\//\\\/\//\//\/\\///\\\\\//\/\\\\/\\/
////\/\\//\\\//\//\\\/\/\\/\\/\\/\\\\\\\\/\//\\\\////\//\/\///\\\
/\/\/\\\\/\/\//\\/\\///\//\\\\////\/\\//\\//\/\/\//\//\/////\//\\
\////\\\\\//\\\\\//\\/\//\\\\\/\\/\\\\/\//\\\/\//\\/\\///\\//\\\\
//\\///\\\/\/\\\/\\\\\/\//\\\\/\\\\/\\\//\\\/\/\/\////\///\\\/\\\
/\\\/\\\\///\\//\/\/\\//\/\\\//\\\/\\\\//\/\//\\\/\////\///\/////
/\\\/\\\\/\\/\///\//\\/\\\//\//\\\\///\\\\/\/\\///\\\\\\\\\/\\///
\//\/\/\\\\/\\/\////\\\//\\\\\\//\////\////\\\//\////\///\///\//\
→ Ссылка
Автор решения: Максим Фисман

Ну есть много способов. Приведу примеры на C++.

  • В цикле увеличивать переменную и сразу уменьшать:
for (int i = 0; i < 1; i++) {
    cout << "О как могу! \n";
    i--;
}
  • Сделать цикл, в котором не изменять переменную, а присваивать:
for (int i = 0; i < 1; i = 0) {ляляля}

или

for (bool i = true; i == true; i = true) {тра-ля-ля}
  • Следующий вариант просто пропустить в цикле for вообще все, что можно:
for (;;) {
    cout << "Супермощь!\n";
}
  • И последний вариант, который дам: идти не в ту сторону, так что условие всегда будет верным:
for (int i = 0; i < 1; i--) {
    cout << "To infinity and beyond!";
}

Удачи!

→ Ссылка
Автор решения: Victor VosMottor

Пустой main через define

#define return for (;;);

int main()
{
    return 0;
}
→ Ссылка
Автор решения: wololo

C++

#include <iostream>

int main(){
    for (unsigned char i = 0; i < 256; ++i)
        std::cout << i;
}
→ Ссылка
Автор решения: EOF
#include <iostream>

#define continue goto my_for
#define for my_for:

int main()
{
    for
    {
        std::cout << "Hello" << std::endl;
        continue;
    }
    return 0;
}

Чем не for? ;)


Контент для лиц старше 18 лет. Возможны приступы ярости и вспышки насилия. Не рекомендуется к просмотру беременным и людям пожилого возраста.

→ Ссылка