Комментарии 100
«int i, n = -20» (ставим минус)
НЛО прилетело и опубликовало эту надпись здесь
int main() { int i, n = 20; for (i = n; i < n; i--) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i > n; i--) { printf("*"); } }
(меняем знак < на >)
(меняем знак < на >)
int main() { int i, n = 20; for (i = 0;-i < n; i--) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
2kixx смена знака на > не помогает :)
2kixx смена знака на > не помогает :)
хе-хе, а мне будет пирожок? Почему на хабре нет спойлеров?
void main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
void main() { int i, n = 20; for (i = 0; i + n; i--) { printf("*"); } }
void main() { int i, n = 20; for (i = 0;-i < n; i--) { printf("*"); } }
PS если не секрет откуда добыта эта задачка? Мне её на первом курсе на оценку превосходно на экзамене по C задавали.
void main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
void main() { int i, n = 20; for (i = 0; i + n; i--) { printf("*"); } }
void main() { int i, n = 20; for (i = 0;-i < n; i--) { printf("*"); } }
PS если не секрет откуда добыта эта задачка? Мне её на первом курсе на оценку превосходно на экзамене по C задавали.
Только почему никто не говорит, что int main() без return это не хорошо.
Это не просто не хорошо, это вообще не скомпилируется.
У вас там Си.
У Си++ ошибок нет: codepad.org/d7zcDXam
У Си++ ошибок нет: codepad.org/d7zcDXam
Ага минусуйте минусуйте, а то что для printf() еще #include <stdio.h> надо все забыли?
мы сосредоточились на поиске того самого единственного символа))
на практике таким, конечно же, не занимаются, а меняют i-- на i++, но тут уже будет 2 символа)))
на практике таким, конечно же, не занимаются, а меняют i-- на i++, но тут уже будет 2 символа)))
int main() без return эквивалентно return 0. Это единственная функция-исключение.
потому что в mainе return не обязателен (но только в main)
3.6.1 Main function
…
2 An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined. All implementations shall allow both of the following definitions of main:
int main() { /*… */ }
and
int main(int argc, char* argv[]) { /*… */ }
… and it continues to add…
5 A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing return 0;
3.6.1 Main function
…
2 An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined. All implementations shall allow both of the following definitions of main:
int main() { /*… */ }
and
int main(int argc, char* argv[]) { /*… */ }
… and it continues to add…
5 A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing return 0;
как выяснилось, с braingames.ru, хотя я узнал о ней из других источников :)
«превосходно» это выше, чем «отлично»?
Да в нашем универе принята семибалльная система. Помимо обычных добавлены 5.5 — превосходно 4,5 — очень хорошо, они влияют на внутренний рейтинг студентов и при большом среднем балле позволяют получать некоторые преимущества, например в выборе кафедры и научного руководителя. При выставлении в диплом оценки округляются в нижнюю сторону.
лично я увидел ее в первый раз на braingames.ru :)
Что-то уже какая-то традиция перепечатывать задачки с braingames.ru (Оригинал: www.braingames.ru/?path=comments&puzzle=169)
в i < n добавляем '-' к i:
-i < n
-i < n
НЛО прилетело и опубликовало эту надпись здесь
int main() { int i, n = 20; for (i = 0; i < n; i--) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i < n; i--) { printf(«Ж»); } }
Почти тоже звёздочка :)
int main() { int i, n = 20; for (i = 0; i < n; i--) { printf(«Ж»); } }
Почти тоже звёздочка :)
я конечно не шарю но.
int main() { int i, n = 20; for (i = 0; -i < n; i--) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
PS: тред не читал, чтоб не напароться на решение, дальше лениво думать…
int main() { int i, n = 20; for (i = 0; -i < n; i--) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
PS: тред не читал, чтоб не напароться на решение, дальше лениво думать…
да по моему этого не было
int main() { int i, n = 20; for (i = 0; i < n; i-) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i < n; i-) { printf("*"); } }
итого
int main() { int i, n = 20; for (i = 0; i < n; i- ) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; -i < n; i--) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
void main() { int i, n = 20; for (i = 0; i + n; i--) { printf("*"); } }
Пирожок мой!
int main() { int i, n = 20; for (i = 0; i < n; i- ) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; -i < n; i--) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
void main() { int i, n = 20; for (i = 0; i + n; i--) { printf("*"); } }
Пирожок мой!
все пирожок точно мой
int main() { int i, n = 20; for (i = 0; i < n; n-+) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i < n; n-+) { printf("*"); } }
int main() { int i, n = 20; for (i = 0; i < n; n+-) { printf("*"); } }
На первый взгляд два варианта:
-Не скомпилится, потому, что int main(), а return нет.
-Будет рисовать звездочки, пока не достигнет минимального для signed int значения, а потом улетит или еще че-нить :)
-Не скомпилится, потому, что int main(), а return нет.
-Будет рисовать звездочки, пока не достигнет минимального для signed int значения, а потом улетит или еще че-нить :)
Зависит от настроек компилятора.
По крайней мере отсутствие #include <stdio.h> тоже повод не скомпилиться.
По крайней мере отсутствие #include <stdio.h> тоже повод не скомпилиться.
ну почему же не работающие вот.
admin@darkstar:/home/projects/6$ cat 1.c
int main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
admin@darkstar:/home/projects/6$ cc 1.c -o 1
1.c: В функции ‘main’
1.c:1: предупреждение: incompatible implicit declaration of built-in function ‘printf’
1.c:1:71: warning: no newline at end of file
admin@darkstar:/home/projects/6$ ./1
********************admin@darkstar:/home/projects/6$
admin@darkstar:/home/projects/6$ cat 1.c
int main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } }
admin@darkstar:/home/projects/6$ cc 1.c -o 1
1.c: В функции ‘main’
1.c:1: предупреждение: incompatible implicit declaration of built-in function ‘printf’
1.c:1:71: warning: no newline at end of file
admin@darkstar:/home/projects/6$ ./1
********************admin@darkstar:/home/projects/6$
Одним символом точно не обойтись — не скомпилится, потому что #include <stdio.h> нет.
Да норм, поругается и скомпилируется :). А вот если Вы, к примеру, всякие синусы планируете использовать, с аргументами, которые несовместимы с int, то всё-таки хедеры подключить придётся.
«Поругается и скомпилится» — по-моему отличный подход для написания багов ;)
Если исходить из неточно сформулированных условий — можно заменить символ " " на «2».
«for (i = 0;» => «for (i =20;»
Также можно " " заменить на "-" здесь:
" i < n;" => "-i < n;"
Про «i»=>«n» — уже сказали, обидно.
«for (i = 0;» => «for (i =20;»
Также можно " " заменить на "-" здесь:
" i < n;" => "-i < n;"
Про «i»=>«n» — уже сказали, обидно.
Еще есть вариант с поразрядным отрицанием, но он дает 21 звездочку:
int main() { int i, n = 20; for (i = 0;~i < n; i--) { printf("*"); } }
С заменой '<' на '+' нашел последним, необычное решение
С «проблемой» об include предлагаю бороться так:
echo «int main() { int i, n = 20; for (i = 0; i < n; n--) { printf(\»*\"); } }" > 1.cpp
echo "#include <stdio.h>" > 2.cpp
echo "#include \«1.cpp\»" >> 2.cpp
gcc -Wall -lstdc++ 2.cpp
— все по-честному, в 1.cpp изменен только один символ, а про компиляцию ничего в условии не было ;)
echo «int main() { int i, n = 20; for (i = 0; i < n; n--) { printf(\»*\"); } }" > 1.cpp
echo "#include <stdio.h>" > 2.cpp
echo "#include \«1.cpp\»" >> 2.cpp
gcc -Wall -lstdc++ 2.cpp
— все по-честному, в 1.cpp изменен только один символ, а про компиляцию ничего в условии не было ;)
Раз уж такая пьянка пошла про корректность условия, то вот оно:
#include <stdio.h>
int main(void)
{
int i, n=20;
for(i = 0; i<n; i--)
printf("*");
return 0;
}
Именно в таком виде она досталась мне 3 года назад.
#include <stdio.h>
int main(void)
{
int i, n=20;
for(i = 0; i<n; i--)
printf("*");
return 0;
}
Именно в таком виде она досталась мне 3 года назад.
Брутфорс говорит, что только три решения:)
Проверены такие символы:
Сам код: pastie.org/private/tsx9h978dw1jfekm0x1w
Возможно какие-нибудь операторы упустил. По всей ascii таблице долго проходиться:)
int main() { int i, n = 20; for (i = 0; i < n; n--) { printf("*"); } } int main() { int i, n = 20; for (i = 0;-i < n; i--) { printf("*"); } } int main() { int i, n = 20; for (i = 0; i + n; i--) { printf("*"); } }
Проверены такие символы:
, i n - + * / % & ~ | > < = ; и 0-9
Сам код: pastie.org/private/tsx9h978dw1jfekm0x1w
Возможно какие-нибудь операторы упустил. По всей ascii таблице долго проходиться:)
>> # Не столь заметное — int main() { int i, n = 20; for (i = 0; -i < n; i--) { printf("*"); } }
Не соотвествует условию. Написано заменить один символ. Про добавить ничего не сказано ;)
Не соотвествует условию. Написано заменить один символ. Про добавить ничего не сказано ;)
Алаверды. Совсем простенький вариант той же задачки.
Нужно заменить ровно один (любой) символ в следующей строке, причём так, чтобы она скомпилилась и было выведено ровно 3 звёздочки:
Нужно заменить ровно один (любой) символ в следующей строке, причём так, чтобы она скомпилилась и было выведено ровно 3 звёздочки:
int main() { int i, n = 30; for (i = 1; i < n; ++i) { printf("*"); } }
* This source code was highlighted with Source Code Highlighter.
Фух, решил по второму варианту.
на ночь глядя нашел эту задачку. почему-то испугался, что не решу;-) через ~10 минут пришел к решению номер три!!! а то я уж было подумал что я совсем не сишник (тфтф!)
интересная задачка, спасибо автору~
интересная задачка, спасибо автору~
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Задачка (без злого умысла)