Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Интересная задачка  (Прочитано 25990 раз)
0 Пользователей и 1 Гость смотрят эту тему.
NetRaider
Гость
« Ответ #30 : 29-12-2003 05:23 » 

Цитата

в том-то и дело что печатает, именно это и есть характерная особенность языка BASIC что это единсвенный (или один из) который позволяет вывести код программы своими средствами .
...
вывод: задача печати программой своего текста решается на транслируемых языках, то есть тех которые исполняются в какой либо IDE и могут использовать ее средства


 

Я же выше привел правильное решение на С.
Записан
comm
Гость
« Ответ #31 : 29-12-2003 21:04 » 

Цитата: NetRaider

Я же выше привел правильное решение на С.


только оно будет собираться с ошибками
--
1.c: In function `main':
1.c:1: warning: implicit declaration of function `printf'
--
а когда здесь появляется #include , то сложность такой программы возрастает.

это я все к тому, что необходимо использовать нужный язык для конкретной задачи. особенно если это не оговорено отдельно
Записан
NetRaider
Гость
« Ответ #32 : 30-12-2003 03:13 » 

Так ты отрицаешь, что на С/C++ можно написать такую программу ?
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #33 : 30-12-2003 08:42 » 

А мне кажется что это задача вполне решаема, только тут вопрос, если нет дебаг информации и привязки к коду, то как получить сам код при дезассемблировании.
Записан

А птичку нашу прошу не обижать!!!
NoFate
Гость
« Ответ #34 : 30-12-2003 09:25 » 

Приведённое выше решение на С вполне рабочее и правильное, но, естественно, оно выглядит сложнее, чем решение на MSX-BASIC, из-за некоторых особенностей языка.
Если предложен BASIC, то предложите конкретный СОВРЕМЕННЫЙ интерпретатор языка, который потерпит насильственного решения из LIST.
Записан
comm
Гость
« Ответ #35 : 30-12-2003 10:12 » 

Цитата: NoFate
Приведённое выше решение на С вполне рабочее и правильное, но, естественно, оно выглядит сложнее, чем решение на MSX-BASIC, из-за некоторых особенностей языка.
Если предложен BASIC, то предложите конкретный СОВРЕМЕННЫЙ интерпретатор языка, который потерпит насильственного решения из LIST.

последние трансляторы BASIC уже слишком круты чтобы иметь LIST Улыбаюсь  хотя я точно незнаю, может под *nix есть это в нормальном виде скрипт-процесссора

на C/C++ это нельзя (или достаточно сложно) сделать тк это КОМПИЛИРУЕМЫЙ язык, а отладочная информация в коде дает только ссылки на привязку к исходнику
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #36 : 30-12-2003 10:27 » 

ТАк вот я и говорю, откуда не имея файла вы возьмете код самого текста.
Так что тут ИМХО некорректно - чтение из файла необходимо.
Записан

А птичку нашу прошу не обижать!!!
NoFate
Гость
« Ответ #37 : 30-12-2003 13:15 » 

comm, Но если на С БЫЛО ПРИВЕДЕНО РЕШЕНИЕ!!! Значит можно!!! Прочитайте все сообщения, котрые были выше.
Записан
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #38 : 31-12-2003 19:58 » 

Ребята, не спорьте!

Задача очень старая (по крайней мере, с начала 70-х годов). Решается на любых компилируемых языках (если в синтаксисе не предусмотрено каких-то особенных выкрутасов), БЕЗ ПРИВЛЕЧЕНИЯ ВСТРОЕННЫХ ВОЗМОЖНОСТЕЙ ВРОДЕ List и без чтения собственного кода из файла!. В первоначальном варианте задача стояла вообще на ассемблере.

Эту задачу на С я давал ученикам в качестве дополнительного задания, и почти в каждом классе кто-нибудь приносил решение.

PS. Рекурсия никакая не требуется.
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #39 : 02-01-2004 01:55 » 

Sashok, а ты опубликуй что-нибудь из упомянутых работ. Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #40 : 02-01-2004 09:49 » 

Я вот думаю, ещё, помимо BASIC и FORTH, на LISP изобразить что-нибудь подобное можно  Ага , там тоже интерпретатор.

А если задачка времён 70-х, то там в "операционных системах" как раз и были операторы типа бейсиковского LIST, потому как интерфейс пользователя, можно сказать, никакой был  Улыбаюсь , а контроль вида "чего ж это я там понапечатал то" должен же быть.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
NoFate
Гость
« Ответ #41 : 02-01-2004 10:12 » 

RXL, вдеь было уже опубликовано решение! Почему всё ещё спор?!
Записан
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #42 : 02-01-2004 15:35 » 

RXL, вот один из примеров:
Код:
#include <stdio.h>
void main()
{int i; char a[2][3],b[2][50];
 a[0][0]=10;a[0][1]=0;a[1][0]=37;a[1][1]=115;a[1][2]=0;
 b[0][0]=112;b[0][1]=114;b[0][2]=105;b[0][3]=110;b[0][4]=116;b[0][5]=102;b[0][6]=40;b[0][7]=34;b[0][8]=0;b[1][0]=37;b[1][1]=115;b[1][2]=34;b[1][3]=44;b[1][44]=59;b[1][45]=125;b[1][46]=0;
 for(i=0;i<8;i++){b[1][5*i+4]=97;b[1][5*i+5]=91;b[1][5*i+6]=105;b[1][5*i+7]=93;b[1][5*i+8]=44;}b[1][39]=98;b[1][43]=41;
 for(i=0;i<2;i++)
  printf("#include <stdio.h>%svoid main()%s{int i; char a[2][3],b[2][50];%s a[0][0]=10;a[0][1]=0;a[1][0]=37;a[1][1]=115;a[1][2]=0;%s b[0][0]=112;b[0][1]=114;b[0][2]=105;b[0][3]=110;b[0][4]=116;b[0][5]=102;b[0][6]=40;b[0][7]=34;b[0][8]=0;b[1][0]=37;b[1][1]=115;b[1][2]=34;b[1][3]=44;b[1][44]=59;b[1][45]=125;b[1][46]=0;%s for(i=0;i<8;i++)|b[1][5*i+4]=97;b[1][5*i+5]=91;b[1][5*i+6]=105;b[1][5*i+7]=93;b[1][5*i+8]=44;}b[1][39]=98;b[1][43]=41;%s for(i=0;i<2;i++)%s  %s",a[i],a[i],a[i],a[i],a[i],a[i],a[i],b[i]);}

Dimka, ты не прав.
Цитата: Dimka
А если задачка времён 70-х, то там в "операционных системах" как раз и были операторы типа бейсиковского LIST, потому как интерфейс пользователя, можно сказать, никакой был  Улыбаюсь , а контроль вида "чего ж это я там понапечатал то" должен же быть.
Во-первых, слова "операционные системы" не надо писать в кавычках: признаком операционной системы является вовсе не графическая оболочка, так что в то время существовали НАСТОЯЩИЕ ОПЕРАЦИОННЫЕ СИСТЕМЫ.
Во-вторых, никаких "операторов типа бейсиковского LIST" в операционных системах встроено не было. Как ты себе это представляешь? Что именно контролировать надо? Если исходный код программы - так ты в редакторе, когда ее набиваешь, сам видишь все. Если исполняемый (в смысле, двоичное представление ассемблерных команд) - так для этого отладчики использовались, опять же никаких LIST при этом программа не получала. Если, наконец, тебя интересовал список выполняемых задач, то для этого - да, были специальные команды, но их никак не используешь для чтения исходника.
« Последнее редактирование: 23-11-2007 16:59 от Алексей1153++ » Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
grozny
Гость
« Ответ #43 : 03-01-2004 19:08 » 

ман Ч. Уэзерелл "Этюды для программистов"
Записан
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #44 : 03-01-2004 19:51 » 

Цитата: grozny
ман Ч. Уэзерелл "Этюды для программистов"
Да, была такая книга, но, по-моему, она появилась в 80-х. Задача явно старше.
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
NetRaider
Гость
« Ответ #45 : 05-01-2004 03:04 » new

Цитата

Я вот думаю, ещё, помимо BASIC и FORTH, на LISP изобразить что-нибудь подобное можно  , там тоже интерпретатор


Причем тут интерпретатор ? Для C++ тоже есть интерпретаторы.

Всем сюда: http://www.nyx.net/~gthompso/quine.htm
Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines