2- 4_Функциональное программирование
.rtfвариант: v = 59*8/div 100 = 4;
Контрольное задание 2.
Вариант 4.
1. Напишите функцию, которая определяет является ли данное натуральное число простым.
Воспользуйтесь более общей задачей: (ispr n m) - "Число n не делится ни на одно число
большее или равное m и меньшее n". Имеем (ispr n m) -истинно, во-первых, если n = m, и
во вторых, если истинно (ispr n m+1) и n не делится на m.
(defun ispr(n m)
(if (= n m)
T
(if (= (rem n m) 0)
NIL
(ispr n (+ m 1))
)
)
)
(defun simple(x)
(cond
((< x 0) NIL)
((= x 1) T)
((> x 0) (ispr x 2))
)
)
2. Напишите функцию, которая сортирует список чисел, используя алгоритм простой вставки.
(defun getmax(x)
(if (null (cdr x))
(car x)
(max (car x) (getmax (cdr x)))
)
)
(defun sortv(x)
(cond
((null x) NIL)
(T
(setq k (getmax x))
(cons k (sortv (delete k x)))
)
)
)
3. Напишите функцию (all p x), которая проверяет "Для всех ли элементов списка х выполняется предикат р?" (р - функция или функциональное имя).
(defun all(p x)
(cond
((null x) T)
((funcall p (car x)) (all p (cdr x)) )
(T NIL)
)
)
Рецензия
Функциональное программирование
Контрольная работа №2
Вариант 4
Специальность 220400
Проверил Зюзьков Валентин Михайлович
16.03.03
Оценка: работа зачтена.
Комментарий
Все правильно.