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

2- 7_Функциональное программирование (Функциональное программирование кр2 Второе контрольное задание Вариант 7)

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

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

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

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

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

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

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

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

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

Шинкарев Денис Юрьевич

(Фамилия Имя Отчество)

15311292

(шифр)

662200 Россия, Красноярский край, г. Назарово,

ул.Фабричная д.5 кв.4

(почтовый адрес)

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

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

Оценка:

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

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

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

Вариант 7

  1. Определите функцию (f n), n кратное 3, вычисляющую сумму: 1*2*3+4*5*6+...+(n-2)*(n-1)*n.

(defun F (N)   (if (< N 3) 0    (+     (* (- N 2) (- N 1) N)     (F (- N 3)))))

  1. Определите функцию (f s), которая в одноуровневом списке чисел s представляет все отрицательные элементы в начало списка, например, (f '(4 -8 6 -9 -7)) -> (-8 -9 -7 4 6).

(defun F (S)   (if S    ((lambda (elem result)      (cond       ((null result) (cons elem result))       ((minusp elem) (cons elem result))       ((plusp (car result)) (cons elem result))       (T        (cons (car result) (F (cons elem (cdr result)))))))     (car S)     (F (cdr S)))))

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

(defun F (S)   (if S    ((lambda (elem result)      (cons       (if (atom elem)        (- elem)        (F elem))       result))     (car S)     (F (cdr S)))))