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

6 чел.

Лабораторная работа № 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))

)

)


 

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

13457. Свойства назначения в Microsoft Project 151 KB
  Урок 3. Свойства назначения Каждое из связанных с задачей назначений имеет набор свойств с помощью которых его можно настроить так чтобы оно в большей степени соответствовало требованиям вашего проекта. Настройка свойств назначения осуществляется в диалоговом окне Св...
13458. Ввод фактических данных 924 KB
  Ввод фактических данных Фактические данные это информация о ходе выполнения запланированных работ на основании которой менеджер проекта осуществляет процесс отслеживания. В системе существует несколько способов ввода фактических данных отличающихся друг от дру
13459. Анализ и оптимизация плана работ 1.12 MB
  Урок 4. Анализ и оптимизация плана работ. Для анализа плана работ проекта применяют две классические методики: PERT и метод критического пути СРМ. При анализе стоимости проекта используют настраиваемые поля формулы и группировки создаются формулы с условиями выявляют
13460. Анализ рисков в Microsoft Project 882.5 KB
  Анализ рисков. Анализ опасностей которые могут возникнуть при выполнении составленного плана один из самых интересных и сложных этапов планирования проекта. От того как проведен анализ зависит будет ли проект успешно завершен. В этом уроке вы научитесь определять
13461. Метод освоенного объема 1.38 MB
  Лабораторная работа Метод освоенного объема Для определения состояния проекта методом освоенного объема используется три величины: Базовая стоимость запланированных работ БСЗР обозначает сводную стоимость работ которые должны были быть осуществлены к текущем
13462. Совместное использование ресурсов 906.5 KB
  Лабораторная работа Совместное использование ресурсов Одновременное управление несколькими проектами в рамках организации осложняется тем что сотрудники и материальные ресурсы должны назначаться на задачи так чтобы назначения одних проектов не противоречили друг...
13463. Подготовка отчетов. Статистика проекта 2.45 MB
  Лабораторная работа Подготовка отчетов Статистика проекта Самым простым отчетом содержащим обобщенные данные о проекте является окно статистики проекта изображенное на рис.48. Рис.48.Статистика проекта Это окно открывается кнопкой Статистика из окна сведени
13464. МАГНИТНОЕ ПОЛЕ 103.67 KB
  ЛАБОРАТОРНАЯ РАБОТА № 1 Тема: МАГНИТНОЕ ПОЛЕ Цель работы: знакомство с моделированием магнитного поля от различных источников. экспериментальное подтверждение закономерностей для магнитного поля прямого провода и кругового витка контура с током. эксперим...
13465. ЭЛЕКТРОМАГНИТНАЯ ИНДУКЦИЯ 44.27 KB
  Лабораторная работа № 2 Тема: ЭЛЕКТРОМАГНИТНАЯ ИНДУКЦИЯ Цель работы: знакомство с моделированием явления электромагнитной индукции ЭМИ. экспериментальное подтверждение закономерностей ЭМИ. Бригада №____. Ход работы: Закрыли окно теории нажав...