20980

Рекурсивная обработка списковой информации

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

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

DEFUN F7_1 L COND NULL L 0 LISTP CAR L F7_1 CAR L F7_1 CDR L T IF NUMBERP CAR L CAR L F7_1 CDR L F7_1 CDR L DEFUN F7 L COND NOT LISTP L Error_Not_list T F7_1 L Определить максимальную глубину списка произвольной структуры. DEFUN F8_1 L COND NULL L 1 ATOM CAR L F8_1 CDR L T MAX 1 F8_1 CAR L F8_1 CDR L DEFUN F8 L COND NOT LIST L Error_Not_list T F8_1 L 1 Найти максимальный элемент в числовом списке...

Русский

2013-08-02

23.34 KB

5 чел.

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

Рекурсивная обработка

списковой информации.

  1.  Определить  предикат,  распознающий списки,  имеющие четное (нечетное) количество элементов.

(DEFUN F6_1 (L N)

(COND ((NULL L) (EVENP N))

(T (F6_1 (CDR L) (+ N 1)))

)

)

(DEFUN F6 (L)

(COND ((NOT (LISTP L)) Error!_Not_list!)

 ((NULL L) List_is_empty)

((EQ (F6_1 L 0) T) Chislo_elementov_Chetno)

(T Chislo_elementov_Nechetno)

)

)

  1.  Подсчитать сумму всех числовых атомов в списке произвольной структуры.

(DEFUN F7_1 (L)

(COND ((NULL L) 0)

((LISTP (CAR L)) (+ (F7_1 (CAR L)) (F7_1 (CDR L))))

(T (IF (NUMBERP (CAR L)) (+ (CAR L) (F7_1 (CDR L))) (F7_1 (CDR L))))

)

)

(DEFUN F7 (L)

(COND ((NOT (LISTP L)) Error!_Not_list!)

 (T (F7_1 L))

)

)

  1.  Определить максимальную глубину списка произвольной структуры.

(DEFUN F8_1 (L)    

(COND

 ((NULL L) 1)

 ((ATOM (CAR L)) (F8_1 (CDR L)))

 (T (MAX (+ 1 (F8_1 (CAR L))) (F8_1 (CDR L))))

)

)

(DEFUN F8 (L)

(COND ((NOT (LIST L)) Error!_Not_list!)

(T (F8_1 L 1))

)

)

  1.  Найти максимальный элемент в числовом списке произвольной структуры.

(DEFUN F9_1 (L)

(COND ((NULL (CDR L)) (IF (NUMBERP (CAR L))

(CAR L)

(F9_1 (CAR L))

))

(T (IF (< (F9_1 (CAR L)) (F9_1 (CDR L)))

(F9_1 (CDR L))

(F9_1 (CAR L))

))

)

)

(DEFUN F9 (L)

(COND ((NOT (LISTP L)) Error!_Not_list!)

((NULL L) List_is_empty)

  (T (F9_1 L))

)

)

  1.  Написать  функцию,  выполняющую  вычисление арифметических выражений, заданных в виде списка. Используемые операции – умножить (*), разделить (/), сложить (+), вычесть (-). При вычислении учитывать приоритет операций и скобочные выражения.

(DEFUN F10_6 (L)

(COND ((NULL (CDR L)) (IF (LISTP (CAR L)) (F10_6 (CAR L)) (CAR L))) ((LISTP (CAR L))

(SETQ L (APPEND (LIST (FUNCALL (CADR L) (F10_6 (CAR L))

(F10_6 (CADDR L)))) (CDDDR L))) (F10_6 L))

(T (SETQ L (APPEND (LIST (FUNCALL (CADR L) (CAR L) (F10_6 (CADDR L)))) (CDDDR L))) (F10_6 L))

)

)

(DEFUN F10_5 (L P)

(IF (NULL P) (SETQ L (APPEND (LIST (F10_3 (CAR L))) (CDR L))))

(COND ((NULL L) NIL)

((OR (EQ (CADR L) "*" ) (EQ (CADR L) "/" )) (APPEND (LIST (CAR L) (CADR L)) (F10_5 (CDDR L))))

(T (LIST (CAR L)))

)

)

(DEFUN F10_4 (L)

(COND ((NULL (CDR L)) NIL)

((OR (EQ (CADR L) "*" ) (EQ (CADR L) "/" )) (F10_4 (CDDR L)) )

(T (CDR L))

)

)

(DEFUN F10_3 (L)

(COND ((NULL L) NIL)

((ATOM L) L)

(T (F10_2 L))

)

)

(DEFUN F10_2 (L P)

(IF (NULL P) (SETQ L (APPEND (LIST (F10_3 (CAR L))) (CDR L))))

(COND ((NULL (CDR L)) L)

((OR (EQ (CADR L) "*") (EQ (CADR L) "/")) (SETQ L (CONS (F10_5 L P) (F10_4 L))) (F10_2 L 1))

(T (APPEND (LIST (CAR L) (CADR L)) (F10_2 (CDDR L))))

)

)

(DEFUN F10_1 (L P)

(COND ((AND (NOT (NUMBERP (CAR L))) (NOT (LIST (CAR L)))) NIL)

((AND (LISTP (CAR L)) (NULL P)) (AND (F10_1 (CAR L)) (F10_1 L 1)))

((NULL (CDR L)) T)

((NULL (CDDR L)) NIL)

((OR (EQ (CADR L) '+ ) (EQ (CADR L) '- ) (EQ (CADR L) '* ) (EQ (CADR L) '/ ))

(F10_1 (CDDR L)))

(T NIL)

)

)

(DEFUN F10 (L)

(COND ((NOT (LISTP L)) Error!_Not_list!)

((NULL L) List_is_empty)

((NOT (F10_1 L NIL)) Syntax_error!)

(T (SETQ L (F10_2 L)) (F10_6 L))

)

)


 

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

69239. РЕАЛІЗАЦІЯ УМОВНИХ КОНСТРУКЦІЙ (ФУНКЦІЇ ЕСЛИ(), СЧЁТЕСЛИ(), СУММЕСЛИ() ТА УМОВНЕ ФОРМАТУВАННЯ) 19.76 KB
  Значеннями в комірках можуть бути числові дані в усіх різновидах логічні значення слова і фрази комірки можуть бути також порожні. Допустимі значення можна задавати як константою так і формулою. Вираз умова подається у вигляді: точного значення якому і мають задовольняти...
69243. Системи трудового і професійного навчання 201.5 KB
  Системи трудового і професійного навчання Поняття системи трудової підготовки. Історія виникнення основних систем трудового і професійного навчання: предметної предметно-операційної операційної операційно-предметної системи ЦШ операційно-комплексної тощо.
69244. Особливості процесу трудової, профільної і професійної підготовки 128.5 KB
  Проілюструємо на деякому фактичному матеріалі готовність учнів до розуміння будови принципу дії деревообробних та металорізальних верстатів та явищ що супроводжують процес різання матеріалів.
69245. Зміст трудового, профільного і професійного навчання 185.5 KB
  Аналіз сучасного змісту трудового профільного і професійного навчання в школі відповідно до Державних стандартів середньої освіти та структури загальноосвітньої школи. Характеристика змісту трудового навчання в початковій основній і старшій школі.
69246. Дидактичні принципи трудового навчання 57.5 KB
  Дидактичні принципи трудового навчання Поняття про загальні принципи трудової підготовки. Характеристика загальних принципів трудової підготовки: гуманізації індивідуалізації та диференціації політехнічна спрямованість трудової підготовки поєднання навчання з трудовою діяльністю тощо.
69247. Методи трудового навчання 141 KB
  Характеристика методів трудового навчання за характером пізнавальної діяльності і самостійності учнів пояснювальноілюстративний репродуктивний метод проблемного викладу частковопошуковий і дослідницький. Методи самостійної роботи учнів.