Помощь - Поиск - Пользователи - Календарь
Полная версия: Основа работы с Лиспом
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
dron4ik
Реализовать с поощью средств Лиспа две пользовательские функции UF1 и UF2. Связать с символлом UFR двухэлементный список, элементами которого будут результаты вычисления соотвественно первой и второй пользовательской функций, полученные при произвольном значении их аргументов. Связать с символом х1 список, обратный списку UFR; с символом х2 - длину списка UFR, а с символом х3 - результат сложения элементов списка UFR.

UF1(x)=3e*e + sin(x-pi*pi );
UF2(x)= tg(x)*ctg(x+pi/2)----это выражение полностью под знаком корня.

вот код проги но выходит ошибка unbound variable - E --не понимаю в чем дело..

(defun uf1 (x)
(+ (* 3 e e)
(sin (- x (* pi pi)))))


(defun uf2 (x)
(sqrt
(/ (tan x)
(tan (+ x (/ pi 2))))))


(defun TOufr (x y)
(setq ufr (list (eval(uf1 x)) (eval(uf2 y))))

)

(defun x1x2x3 ()
(setq x1 (reverse ufr))
(setq x2 (length ufr))
(setq x3 (+ (nth 0 ufr) (nth 1 ufr)))
)

volvo
Где у тебя описана переменная е? Может быть, имелось в виду основание натурального логарифма (то, которое = 2.718 ... ну, там еще много цифр)? Так это не переменная, а функция... expt называется...
dron4ik
вот переделал..щас ошибка не выходит, но ответ

> (uf1 2)
21.0324
> (uf2 2)
#C(0.0 2.18504)----------сдесь подозрительный ответ.в чем дело не понимаю(

сам код

  (defvar e 2.71)
(defun uf1 (x)
(+ (* 3 e e) (sin (- x (* pi pi)))))

(defun uf2 (x)
(sqrt (/ (tan x) (tan (+ x (/ pi 2))))))

(defun TOufr (x y)
(setq ufr (list (eval(uf1 x)) (eval(uf2 y))))
)
(defun x1x2x3 ()
(setq x1 (reverse ufr))
(setq x2 (length ufr))
(setq x3 (+ (nth 0 ufr) (nth 1 ufr)))
)

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.