20983

Функционалы

Лабораторная работа

Информатика, кибернетика и программирование

DEFUN SORT FileName File1 File2 File3 File4 SETQ F OPENINPUTFILE FileName SETQ F1 OPENOUTPUTFILE File1 SETQ F2 OPENOUTPUTFILE File2 SETQ F3 OPENOUTPUTFILE File3 SETQ F4 OPENOUTPUTFILE File4 IF NOT EQ NIL F LOOP EQ NIL SETQ X READ F SORT_IS_FINISHED COND NUMBERP X WRITE X F1 LISTP X WRITE X F2 ;EQ SYM TYPE X WRITE X F3 T WRITE X F4 ERROR_WRONG_FILE_NAME .

Русский

2013-08-02

20.7 KB

3 чел.

Лабораторная работа № 5.

Функционалы.

  1.  Сформировать список,  содержащий номера позиций  элементов исходного списка, удовлетворяющих заданному условию.

(DEFUN  F21_1  (L F K)

(COND ((NULL L)  NIL)

((FUNCALL F (CAR L)) (CONS K (F21_1 (CDR L) F (+ K 1))))  

(T (F21_1 (CDR L) F (+ K 1)))

)

)

(DEFUN F21 (L F)

(COND ((NOT (LISTP L)) ERROR!_WRONG_LIST_ARGUMENT!)

((NULL L) LIST_IS_EMPTY!)

 (T (F21_1 L F 1))

)

)

пример

(F21 ‘(-10 3 A P 4 -3 2 6 S) ‘MINUSP)  => (1 6)

 (F21 ‘(-10 3 A P 4 -3 2 6 S) ‘PLUSP)   => (2 5 7 8)

(F21 ‘(-10 3 A P 4 -3 2 6 S) ‘SYMBOLP)  => (3 4 9)

  1.  Задан линейный числовой список.  Сформировать список  сумм подмножеств элементов исходного списка таким образом, что на первом месте должна стоять сумма всех элементов списка,  на втором – сумма элементов без первого, на третьем - сумма элементов без первых двух и т.д.

(DEFUN F22 (L)

(COND ((NOT (LISTP L)) ERROR!_WRONG_LIST_ARGUMENT!)

((NULL L) LIST_IS_EMPTY!)

 (T (MAPLIST '(LAMBDA(L) (APPLY + L)) L))

)

)

пример

(F22 ‘(1 1 1 1 1 1 1))  => (7 6 5 4 3 2 1)

(F22 ‘(1 2 3 4 5 6 7))  => (28 27 25 22 18 13 7)

  1.  Удалить из исходного линейного списка все вхождения заданного элемента.

(DEFUN F23 (L X)

(COND ((NOT (ATOM X)) ERROR!_WRONG_ARGUMENT!)

((NOT (LISTP L)) ERROR!_WRONG_LIST_ARGUMENT!)

((NULL L) LIST_IS_EMPTY!)

(T  (MAPCON '(LAMBDA (L)

(IF (EQ (CAR L) X)

NIL

(LIST (CAR L))

)

)

L)

)

)

)

пример

(F23 ‘(A C X C A B Y X D A) X)   => (A C C A B Y D A)

(F23 ‘(A C X C A B Y X D A) A)   => (C X C B Y X D)

(F23 ‘(0 1 0 0 1 1 1 0 0) 1)   => (0 0 0 0 0)

  1.  Оставить в исходном линейном списке не более одного вхождения каждого элемента.

(DEFUN F24 (L)

(COND ((NOT (LISTP L)) "WRONG LIST ARGUMENT")

 (T  (MAPCON '(LAMBDA (L)

(IF (MEMBER (CAR L) (CDR L))

NIL

(LIST (CAR L))

)

)

     L)

)

)

)

пример

(F24 ‘(A C X C A B Y X D A))   => (A C X B Y D)

(F24 ‘(0 1 0 0 1 1 1 0 0))   => (0 1)

  1.  Даны два исходных списка одинакового размера. Сформировать из неравных друг другу элементов с одинаковыми порядковыми номерами точечные пары, объединив их в один результирующий список.

(DEFUN F25 (L1 L2)

(COND ((OR (NOT (LISTP L1)) (NOT (LISTP L2))) ERROR!_WRONG_LIST_ARGUMENT!)

((OR (NULL L1) (NULL L2)) ERROR!_LIST_IS_EMPTY!)

((NOT (= (LENGTH L1) (LENGTH L2))) ERROR!_DIFFERENT_LENGTHS!)

(T  (MAPCAN '(LAMBDA (L1 L2)

(IF (AND (ATOM L1) (ATOM L1) (Not (EQ L1 L2)))

(LIST (CONS L1 L2))

NIL

)

)

L1 L2)

)

)

)

пример

(F25 ‘(A B C D 2 F) ‘(A C X 3 6 F))  => ((B . C) (C . X) (D . 3) (2 . 6))

(F25 ‘(A B C D 2 F) ‘(A C X 3))   => ERROR!_DIFFERENT_LENGTHS!

Входной  файл  на внешнем носителе содержит исходные данные в виде множества допустимых в ЛИСП структур данных.  Рассортировать его  и записать на внешний носитель в виде четырех файлов, каждый из которых содержит либо  числовые  атомы,  либо  символьные атомы, либо точечные пары, либо списки.

(DEFUN SORT (FileName File1 File2 File3 File4)

(SETQ F   (OPEN-INPUT-FILE FileName))

(SETQ F1 (OPEN-OUTPUT-FILE File1))

(SETQ F2 (OPEN-OUTPUT-FILE File2))

(SETQ F3 (OPEN-OUTPUT-FILE File3))

(SETQ F4 (OPEN-OUTPUT-FILE File4))

(IF (NOT (EQ NIL F))

 (LOOP

  

  ((EQ NIL (SETQ X (READ F))) SORT_IS_FINISHED)

  (COND ((NUMBERP X) (WRITE X F1))

   ((LISTP X) (WRITE X F2))

   ;((EQ SYM (TYPE X)) (WRITE X F3))

   (T (WRITE X F4))

)

)

ERROR!_WRONG_FILE_NAME!

)

)


 

А также другие работы, которые могут Вас заинтересовать

49794. Расчет переходных процессов 185.88 KB
  При всех изменениях в электрической цепи: включении выключении коротком замыкании колебаниях величины какого-либо параметра и т. Расчет переходных процессов с применением классического метода Для электрической цепи рисунок 1 и исходных данных таблица 1 найти закон изменения тока при замыкании ключа К. 7 Так как следовательно: Так как следовательно: Закон изменения тока на индуктивности будет иметь вид: Для нахождения закона изменения тока на индуктивности при переходном процессе необходимо рассчитать входное...
49795. Создание сайта Радиотехника и освоение человеком космического пространства 290.5 KB
  Структура и компоненты HTMLдокумента. Гиперссылки в документах HTML. В Internet составители компьютерных страниц делают практически то же самое подчеркивая либо выделяя в документах ключевые слова или пиктограммы.
49798. Расчёт параметров систем передачи непрерывных сообщений дискретными сигналами 874.5 KB
  Распределение ошибки передачи сообщения по источникам искажений. Расчёт информационных характеристик источника сообщения и канала связи. Для преобразования непрерывного сообщения в цифровую форму используются операции дискретизации и квантования. В составе цифрового канала предусмотрены устройства для преобразования непрерывного сообщения в цифровую форму АЦП аналого-цифровой преобразователь на передающей стороне и устройства преобразования цифрового сигнала в непрерывный ЦАП...
49799. Индивидуальный жилой дом в г. Рязань 368.27 KB
  Оконные проемы в стенах запроектированы без четвертей, чтобы обеспечить тепловую защиту от продувания через оконные проемы утеплитель делают выступающим на 30 мм над оконными и дверными проемами уложены железобетонные перемычки. Они передают нагрузку от вышележащих конструкций на стены.
49800. Нахождение корней нелинейного уравнения 3.95 MB
  Блок-схемы реализующие численные методы -для метода дихотомии: Блок-схема для метода хорд: Блок-схема для метода Ньютона: Листинг программы unit Unit1; interfce uses Windows Messges SysUtils Vrints Clsses Grphics Controls Forms Dilogs TeEngine Series ExtCtrls TeeProcs Chrt Menus OleCtnrs StdCtrls xCtrls OleCtrls VCF1 Mth; type TForm1 = clssTForm GroupBox1: TGroupBox; OleContiner2: TOleContiner; MinMenu1: TMinMenu; N1: TMenuItem; Chrt1: TChrt; Series1:...