Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

0- 0_Функ.и лог. прог

.doc
Скачиваний:
12
Добавлен:
23.06.2014
Размер:
26.11 Кб
Скачать

Министерство образования Российской Федерации

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Заочный факультет

(дистанционная форма обучения)

Кафедра автоматизированных систем управления (АСУ)

Функциональное програмирование

КОНТРОЛЬНАЯ РАБОТА №1

Дата выполнения работы 3.02.2008г.

Дата проверки:

Оценка:

Подпись преподавателя:

Функциональное программирование

Первое контрольное задание

Вариант 6

  1. Определите функцию (f a b c), которая вычисляет список корней квадратного уравнения a*x^2+b*x+c=0 (если корней нет, то список пустой).

(defun F (a b c)   ((lambda (d)     (mapcar     '(lambda (sign)       (/        (+ (* -1 b) (* sign (sqrt d)))        (* 2 a)))     '(-1 +1)))    (- (* b b) (* 4 a c))))

  1. Напишите функцию, аналогичную встроенной функции замены subst в списке s выражение x на y, но производящую взаимную замену x на y, т.е. x->y, y->x.

(defun MUTUAL_SUBST (S x y)   (if S    ((lambda (elem result)      (cons       (cond        ((equal elem x) y)        ((equal elem y) x)        (T elem))       result))     (car S)     (MUTUAL_SUBST (cdr S) x y))))

  1. определите функцию (f s), результатом которой является список, получающийся после удаления на всех уровнях всех положительных элементов списка чисел s.

(defun EXCLUDEPOSITIVE (S)   (if S    ((lambda (elem result)      (if (listp elem)       (cons (EXCLUDEPOSITIVE elem) result)       (if (plusp elem)        result        (cons elem result))))     (car S)     (EXCLUDEPOSITIVE (cdr S)))))