Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Програма на с++ которая выводит сама себя

Автор: Antyrat
Дата сообщения: 08.11.2006 19:16

Цитата:
А на чём? Дос/Линукс/Юникс?

MS-DOS
Автор: A_V
Дата сообщения: 09.11.2006 22:16
KADABRA

Цитата:
main(r){printf(r="main(r){printf(r=%c%s%c,34,r,34,10);}%c",34,r,34,10);}
73 символа

скомпиленное под BC3 (DOS) оно выведет
main(r){printf(r="",34,r,34,10);}

мне известен вариант на 78 байт, успешно работающий на BC3:
main(){char* s="main(){char* s=%c%s%c;printf(s,34,s,34);}";printf(s,34,s,34);}

еще короче можно на perl:
printf($x,39,$x='printf($x,39,$x=%c%s%c,39);',39);

или на DOS-batch:
@type %0
Автор: KADABRA
Дата сообщения: 10.11.2006 09:00
A_V

Цитата:
скомпиленное под BC3 (DOS) оно выведет
main(r){printf(r="",34,r,34,10);}

Под досом у меня нету возможности проверить, но по линуксом работает
Автор: Antyrat
Дата сообщения: 10.11.2006 15:19
А инклуды???????
Автор: rain87
Дата сообщения: 10.11.2006 16:53
без инклудов не пашет под досом. ни в тс, ни в бс


Добавлено:
A_V
Цитата:
еще короче можно на perl: printf($x,39,$x='printf($x,39,$x=%c%s%c,39);',39);
system("type $0")

только не надо возражать, что сорс с собой надо брать

Добавлено:
кстати, фикс к последней версии проги, выводящей сорс, чтоб не выводила в конце левый символ
Код: #include<stdio.h>
main(){for(FILE*a=fopen(__FILE__,"r");putchar(fgetc(a))^125;);}
Автор: Antyrat
Дата сообщения: 10.11.2006 21:05
аааааааааааааааа 3 символа осталось до завершения задачи!!!!!
Автор: A_V
Дата сообщения: 10.11.2006 21:49
rain87

Цитата:
без инклудов не пашет под досом. ни в тс, ни в бс

ерунда, printf и без инклуда bc3.1 компилит, с ворнами правда.. путь к LIb тока пропиши..

Цитата:
только не надо возражать, что сорс с собой надо брать

это почему не надо? тогда уж вариант с бат файлом рулит..
Antyrat
да успокойся, все уже завершилось
Автор: rain87
Дата сообщения: 10.11.2006 22:36
A_V

Цитата:
ерунда, printf и без инклуда bc3.1 компилит, с ворнами правда.. путь к LIb тока пропиши..

http://img144.imageshack.us/img144/7362/tempdc7.png
где я неправильно нажимаю?
путь к либам, разумеется, прописан... интересно, как бы иначе я в нём что-нибудь компилил бы?
Автор: A_V
Дата сообщения: 10.11.2006 23:14
rain87
ну и зачем ты поставил опцию 'С++ Always'?
Смени обратно на дефолтную 'CPP Extension' (Options->Compiler->C++ Options) и еррор плавно превратится в ворн

Цитата:
интересно, как бы иначе я в нём что-нибудь компилил бы?

ну откуда я знаю, может у тебя вобще ничего не компилится
Автор: rain87
Дата сообщения: 11.11.2006 09:32
A_V
Цитата:
ну и зачем ты поставил опцию 'С++ Always'?
да не ставил я... оно по дефолту стояло
ну да ладно
http://img215.imageshack.us/img215/4752/tempxu3.png
только не надо говорить, что я сначала скомпилил, а потом выставил
Цитата:
ну откуда я знаю, может у тебя вобще ничего не компилится
ну понятно... куда уж мне убогому
Автор: Antyrat
Дата сообщения: 11.11.2006 14:11
хм. ну не знаю.... у меня компилятор без инкудов не пропускает! И что тогда делать надо????


Цитата:
да успокойся, все уже завершилось

Автор: A_V
Дата сообщения: 11.11.2006 14:56
rain87
Antyrat
Я кажется понял в чем у вас грабли ))
Вы расширение файлу .cpp делаете, а надо - .с
Компилятор по такому расширению понимает, что это чистый C++ и такой лажи не пропускает )
Автор: rain87
Дата сообщения: 11.11.2006 15:27
A_V
угу
Код: Compiling 1.C:
Warning 1.C 1: Call to function 'printf' with no prototype
Warning 1.C 1: Function should return a value
Linking 1.EXE:
Автор: Antyrat
Дата сообщения: 13.11.2006 16:07
Прикиньте, мне сказали что нельзя использовать перемнную __FILE__ и вообще считывание с файла..... и что мне тогда делать???? мне ето просто позарез надо! =(
Автор: KADABRA
Дата сообщения: 13.11.2006 16:12
Antyrat

Цитата:
Прикиньте, мне сказали что нельзя использовать перемнную __FILE__ и вообще считывание с файла

И правильно сказали. И вообще, это не перемення.

Цитата:
и что мне тогда делать????

Читать этот топик до просветления.
Автор: Antyrat
Дата сообщения: 13.11.2006 16:38

Цитата:
#include<stdio.h>
main(){char*s="#include<stdio.h>%cmain(){char*s=%c%s%c;printf(s,10,34,s,34,10);}%c";printf(s,10,34,s,34,10);}



Но не етоже мне использовать! Надоже чтооб если преподователь ввел в верху какуюто функцыю, или в низу, тоесть в любом месте програмы она тоже вывелась

Вот напимер так не будет никагого результата


Цитата:
#include<stdio.h>
#include<conio.h>
main(){char*s="#include<stdio.h>%cmain(){char*s=%c%s%c;printf(s,10,34,s,34,10);}%c";printf(s,10,34,s,34,10);}


Автор: KADABRA
Дата сообщения: 13.11.2006 16:44
Antyrat

Цитата:
програма должна занимать до 80 символов


Цитата:
в Институте, а там только Турбо си =(


Цитата:
нельзя использовать [...] считывание с файла.


Цитата:
Надоже чтооб если преподователь ввел в верху какуюто функцыю, или в низу, тоесть в любом месте програмы она тоже вывелась

Тогда только магия.
Автор: Antyrat
Дата сообщения: 13.11.2006 17:17
Нет не магия а чудо, поетому сюа и обратилса! На ету задачу выноситса 50 баллов из 100. а ето полекзамена, за задачку в 80 символов......! А что ни на каких других языках нет решения чтоли????
Автор: FireZone
Дата сообщения: 14.11.2006 09:53
Antyrat
Цитата:
А что ни на каких других языках нет решения чтоли????
Турбо Си на других языках не говорит. У тебя весь топик условия меняются.
Автор: Antyrat
Дата сообщения: 14.11.2006 19:30
Вначале топика я писал что подходит не только С а еще и ассемблер и паскаль! перечитай внимательно!
Автор: rain87
Дата сообщения: 14.11.2006 19:56
Antyrat
вам уже ответили
Цитата:
Тогда только магия.
ну или свой, самобытный язык программирования, который одним спецсимволом выводит исходный код программы (кстати, неплохой вариант в качестве альтернативы магии )
Автор: A_V
Дата сообщения: 15.11.2006 02:26
Antyrat
либо твой препод не в курсе, либо ты его неправильно понял, но, если
-
Цитата:
програма должна занимать до 80 символов

то это НИКАК не совместимо с
-
Цитата:
мне сказали что нельзя использовать перемнную __FILE__ и вообще считывание с файла.....

-
Цитата:
Надоже чтооб если преподователь ввел в верху какуюто функцыю, или в низу, тоесть в любом месте програмы она тоже вывелась


а за пример исходника удовлетворяющего всем условиям задачи и успешно собирающегося на существующих компиляторах C/ASM/Pas имхо надо нобелевскую давать а не жалкий экзамен )
Автор: Antyrat
Дата сообщения: 15.11.2006 18:37
Может быть и так, но не просто так же он ето задал! Значит решение, есть и он его знает!

В принцыпе свыше 80 символов екзамен не поставит, но какието балы защитает, может хоть свыше 80 символов чтото сможете предложыть??

Страницы: 12

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


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.