Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.09;
Скачать: CL | DM;

Вниз

Вторничная задачка   Найти похожие ветки 

 
Kerk ©   (2004-12-21 09:36) [0]

В языке PROLAN/F, предназначенном для работы со строками символов и
логическими значениями, программа состоит из двух частей. Первая часть
содержит разделенные запятыми определения функций (с логическими либо
строковыми значениями и логическими или строковыми формальными параметрами),
а вторая - запросы значений функций для конктреных параметров - строк символов
(например, "abs") или логических констант (ДА и НЕТ).

В языке есть несколько функций:
ПУСТО?(х) (х - строка, результат - ДА, если х пустая, и НЕТ - если х непуста);
СИМРАВ?(х,у) (х,у - односимвольные строки; результат - ДА, если строки совпадают);
КОНСИМ(х) (х - непустая строка; результат - односимвольная строка, состоящая из последнего символа строки х);
НАЧСТР(х) (х - непустая срока; результат - строка, получающаяся удалением в х последнего символа);
ПРИПКОНСИМ(х,у) (х - строка, у - односимвольная строка; результат - строка, получающаяся приписыванием символа у в конец х);

Определение новой функции записывается так:
<имя функции>(<перечень формальных параметров>)=<условное значение>Здесь <перечень формальных параметров> - разделенные запятыми идентификаторы формальных параметров,
а <условное значение> имеет вид:
(<условие>-<значение>,<условие>-<значение>,..,ИНАЧЕ-<значение>)
При исполнении условное значение равно самому первому из тех <значений>, для которых
записанные перед ними условия истинны, если же все условия ложны - то значению, записанному
после "ИНАЧЕ".

Участвующие в записи <условного значения> <условия> и <значения> могут быть:
а) логическими или строковыми константами,
б) элементами <перечня формальных параметров> текущего определения,
в) обращениями к встроенным либо описанным функциям,
г) некоторыми <условными значениями>.
Такими же могут быть и аргументы функций, используемых в определении.

Заметим, что в данном языке отстутствуют такие объекты, как переменные, оператор
присваивания, цикл и т.п., что делает программирование на нем весьма не очень
скучным занятием.

ПРИМЕРЫ:
Определение логического отрицания:
 не(х)=(х-НЕТ,ИНАЧЕ-ДА)
Логическое "и":
 и(х,у)=(х-у,ИНАЧЕ-НЕТ)
Логическое "или":
 или(х,у)=(х-ДА,у-ДА,ИНАЧЕ-НЕТ)
либо
 или(х,у)=(ДА-не(и(не(х),не(у))),ИНАЧЕ-"")

ТРЕБУЕТСЯ дать на описанном языке определения функций с аргументами - строками:
а) СТРРАВ?(х,у) - равна "ДА", если аргументы равны;
б) СТРПРИНАДЛ?(х,у) - равна "ДА", если строка х является подстрокой у (т.е.
некоторая совокупность идущих подряд символов строки у образует строку х);
в) ПЕРЕВОР(х) - строка, получаемая перестановкой символов строки х в обратном порядке;
г) ПОДСТАВИТЬЛЕВ(х,у,z) - строка, получающаяся из строки z заменой самого левого
вхождения в нее подстроки х (если таковые в z есть) на строку у.

===
бан - оружие слабых.


 
Johnmen ©   (2004-12-21 09:38) [1]

Своё домашнее задание ты должен решить сам.


 
Kerk ©   (2004-12-21 09:49) [2]

Ой.. давай не будем.. :)
Я по-моему уже достаточно давно на форуме, чтоб народ знал, что я так не поступаю...


 
Johnmen ©   (2004-12-21 10:04) [3]

>Kerk ©   (21.12.04 09:49) [2]
>Я по-моему уже достаточно давно на форуме, чтоб народ знал, что
>я так не поступаю...

Юношеский нарциссизм ? :)))

PS Народ м.б. и знает, а я нет.


 
Kerk ©   (2004-12-21 10:08) [4]


> Юношеский нарциссизм ? :)))

Ну чего мне сегодня с утра все диагнозы ставят? :)))


 
Внук ©   (2004-12-21 10:09) [5]

>>Kerk ©   (21.12.04 10:08) [4]
 Хотите поговорить об этом? LOL


 
TUser ©   (2004-12-21 10:10) [6]

а) СТРРАВ?(х,у)=
  (и(СИМРАВ?(КОНСИМ(х),КОНСИМ(у)),
     СТРРАВ(НАЧСТР(х),НАЧСТР(у))))
в) ПЕРЕВОР(х)=
  (КОНСИМВ(x)+ПЕРЕВОР(НАЧСТР(х)))
" я надеюсь конкатенация там разрешена,
" хотя это явно и не оговорено
" если да - то я большой спец по использованию
" рекурсии для переворачивания массивов


> Johnmen ©   (21.12.04 09:38) [1]

Мне, например, тоже интересно решить в и д функциональными методами.


 
Kerk ©   (2004-12-21 10:13) [7]


> TUser ©   (21.12.04 10:10) [6]

Нет. Конкатенация не разрешена. Разрешено только то, что явно упомянуто. И в пункте А, что у тебя будет, если длины строк разные?


 
Kerk ©   (2004-12-21 10:14) [8]

В свое время я решил первые три. :)


 
Johnmen ©   (2004-12-21 10:15) [9]

>Kerk ©   (21.12.04 10:08) [4]
>Ну чего мне сегодня с утра все диагнозы ставят? :)))

Это всего лишь предположение.

>TUser ©   (21.12.04 10:10) [6]
>Мне, например, тоже интересно решить в и д функциональными методами.

Так никто не против...:)


 
Kerk ©   (2004-12-21 10:16) [10]


> > TUser ©   (21.12.04 10:10) [6]

К тому же у тебя ответы синтаксически неверно записаны. :)))


 
MBo ©   (2004-12-21 12:16) [11]


СТРРАВ(x,y)=(
и(ПУСТО?(x),ПУСТО?(y))=ДА,
  или(ПУСТО?(x),ПУСТО?(y))-НЕТ,
    ИНАЧЕ
      и(СИМРАВ?(КОНСИМ(х),КОНСИМ(у)),СТРРАВ(НАЧСТР(x),НАЧСТР(y)))


 
Kerk ©   (2004-12-21 12:29) [12]


> MBo ©   (21.12.04 12:16) [11]

Первая самая простая - есть.
Кто дальше? :)


 
MBo ©   (2004-12-21 12:41) [13]

>Kerk ©   (21.12.04 12:29) [12]
Сильно напрягают русские имена функций, как оказалось ;)
А так  - это работа со стеком, имеющим только Peek, Pop, Push


 
MBo ©   (2004-12-21 13:08) [14]

пришлось доп. функцию ввести:


СТРПРИНСТРОГ?(х,у)=(
 ПУСТО?(x)-ДА,
  ПУСТО?(y))=НЕТ,
   ИНАЧЕ
    и(СИМРАВ?(КОНСИМ(х),КОНСИМ(у)),СТРПРИНСТРОГ?(НАЧСТР(x),НАЧСТР(y)))

СТРПРИНАДЛ?(х,у)=(
 ПУСТО?(x)-ДА,
  ПУСТО?(y))=НЕТ,
    и(СИМРАВ?(КОНСИМ(х),КОНСИМ(у)),СТРПРИНСТРОГ?(НАЧСТР(x), НАЧСТР(y))-ДА,
  ИНАЧЕ
СТРПРИНАДЛ?(x,НАЧСТР(y)))



 
Kerk ©   (2004-12-21 14:17) [15]


> MBo ©   (21.12.04 13:08) [14]

А что какой смысл ты вкладывал в название доп.функции? Что-то никак не соображу. Похоже ты единственный кому это здесь интересно. :(



Страницы: 1 вся ветка

Текущий архив: 2005.01.09;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.051 c
14-1103595244
Чеширский_Кот
2004-12-21 05:14
2005.01.09
ФИФА признала Роналдиньо лучшим футболистом-2004


14-1103203292
Игорь Шевченко
2004-12-16 16:21
2005.01.09
Министр обороны призвал "прекратить дебилизацию" россиян


8-1096993960
dron-s
2004-10-05 20:32
2005.01.09
Размер картинки


1-1103651670
Redlord
2004-12-21 20:54
2005.01.09
как перевести ( s:= 01FA0 ) в интегер


3-1102607156
hawkins
2004-12-09 18:45
2005.01.09
не работает IBSQLMonitor