> 1 <

Автор Сообщение

Frantic

Members


Статус

5 сообщений

Где: Russia
Род занятий:
Возраст:

#4645   2011-08-25 19:57 GMT+3 часа(ов)      
Помогите пожалуйста студенту. Учусь на заочке, с преподом пообщаться не имею возможности так что уповаю на вашу помощь. Вот задание:

Записать определение функции F1 на языке программирования Common Lisp, которая выполняла бы следующие действия:
1. Выводила сообщение, в котором пользователю предлагалось ввести 4 числа xi;
2. Записывала введенные числа в список (x1 x2 x3 x4);
3. Вычисляла значения функций Y1 Y2 Y3 Y4 для каждого xi;
4. Записывала значения этих функций в свойства каждой переменной xi

Y1=(EXPT (- x) (sin(+ 4 (log(- x 1))))) если x>=2
Y1=(/ (EXPT (cos 2)(- x 3)) (sin(-(sqrt x) (* 1.5 pi)))) если 0<=x<=1
Y1=(- x) в остальных случаях

Вот что пока я навоял:

(format t "VVedite komandu (vvod) i vvedite peemennie")
 
(defun make (x1 x2 x3 x4)
(list :x1 x1 :x2 x2 :x3 x3 :x4 x4))
 
(defun prompt-read (prompt)
(format *query-io* "~a: " prompt)
(force-output *query-io*)
(read-line *query-io*))
 
(defun vvod ()
(make
(parse-integer (prompt-read "x1") :junk-allowed t)
(parse-integer (prompt-read "x2") :junk-allowed t)
(parse-integer (prompt-read "x3") :junk-allowed t)
(parse-integer (prompt-read "x4") :junk-allowed t)))


Вопрос:
Как мне сравнить элементы списка с условием, или как мне вообще дальше работать с эти списком.

Извиняюсь если не правильно сформулировал вопрос.
Заранее всем спасибо.

отредактировал(а) Frantic: 2011-08-25 20:06 GMT+3 часа(ов)

Frantic

Members


Статус

5 сообщений

Где: Russia
Род занятий:
Возраст:

#4656   2011-09-06 13:38 GMT+3 часа(ов)      
Фухх.... разобрался как сделать...
(format t "VVedite komandu (F1 x1 x2 x3 x4)")
 
(defun F1 (x1 x2 x3 x4)
(setq sp (list x1 x2 x3 x4))
(prompt-x1)
(prompt-x2)
(prompt-x3)
(prompt-x4))
 
(defun prompt-x1 () (progn
(setq x (car sp))
(setq y1 (cond ((>= x 2) (f11 x)) ((<= 0 x 1) (f12 x)) (t (f13 x))))
(setq y2 (cond ((<= 0 x 0.5) (f21 x)) ((<= -3 x -1) (f22 x)) (t 2)))
(setq y3 (cond ((< -5 x -1) (f31 x)) ((>= x 2) (f32 x)) (t (f33 x))))
(setq y4 (cond ((> x 4) (f41 x)) ((<= 0 x 2) (f42 x)) (t (f43 x))))
(setq x1 (list y1 y2 y3 y4))))
 
(defun prompt-x2 () (progn
(setq x (cadr sp))
(setq y1 (cond ((>= x 2) (f11 x)) ((<= 0 x 1) (f12 x)) (t (f13 x))))
(setq y2 (cond ((<= 0 x 0.5) (f21 x)) ((<= -3 x -1) (f22 x)) (t 2)))
(setq y3 (cond ((< -5 x -1) (f31 x)) ((>= x 2) (f32 x)) (t (f33 x))))
(setq y4 (cond ((> x 4) (f41 x)) ((<= 0 x 2) (f42 x)) (t (f43 x))))
(setq x3 (list y1 y2 y3 y4))))
 
(defun prompt-x3 () (progn
(setq x (caddr sp))
(setq y1 (cond ((>= x 2) (f11 x)) ((<= 0 x 1) (f12 x)) (t (f13 x))))
(setq y2 (cond ((<= 0 x 0.5) (f21 x)) ((<= -3 x -1) (f22 x)) (t 2)))
(setq y3 (cond ((< -5 x -1) (f31 x)) ((>= x 2) (f32 x)) (t (f33 x))))
(setq y4 (cond ((> x 4) (f41 x)) ((<= 0 x 2) (f42 x)) (t (f43 x))))
(setq x2 (list y1 y2 y3 y4))))
 
(defun prompt-x4 () (progn
(setq x (cadddr sp))
(setq y1 (cond ((>= x 2) (f11 x)) ((<= 0 x 1) (f12 x)) (t (f13 x))))
(setq y2 (cond ((<= 0 x 0.5) (f21 x)) ((<= -3 x -1) (f22 x)) (t 2)))
(setq y3 (cond ((< -5 x -1) (f31 x)) ((>= x 2) (f32 x)) (t (f33 x))))
(setq y4 (cond ((> x 4) (f41 x)) ((<= 0 x 2) (f42 x)) (t (f43 x))))
(setq x4 (list y1 y2 y3 y4))))
 
(defun f11 (x) (setq y1 (EXPT (- x) (sin(+ 4 (log(- x 1)))))))
(defun f12 (x) (setq y1 (/ (EXPT (cos 2)(- x 3)) (sin(-(sqrt x) (* 1.5 pi))))))
(defun f13 (x) (setq y1 (- x)))
(defun f21 (x) (setq y2 (tan(- x 2 (sin x)))))
(defun f22 (x) (setq y2 (+ (- (EXPT x 2) (* 3 x)) 1 (tanh(- (EXPT x 2) 3)))))
(defun f23 (x) (setq y2 2))
(defun f31 (x) (setq y3 (sqrt(+ (- (EXPT x 4) (* 3 (EXPT x 2))) 5))))
(defun f32 (x) (setq y3 (EXPT 2 (- (cos(+ (* 2 x) 1)) 0.5))))
(defun f33 (x) (setq y3 (+ x 5)))
(defun f41 (x) (setq y4 (cos(+ (EXPT x 0.3) (EXPT 1.5 (+ x 1))))))
(defun f42 (x) (setq y4 (- (EXPT(sqrt(+ (* x 3) 2)) 5) (sin(+ (EXPT x 3) (EXPT 3 (* 0.2 x)))))))
(defun f43 (x) (setq y4 (+ (- 2) x (EXPT x 2))))


Теперь другой вопрос.
Второе задание:
Записать определение функции F2 на языке программирования Common Lisp, которая анализировала бы свойства элементов списка созданного функцией F1 и выводила те элементы, у которых сумма значений любых трех функций больше четвертой.
> 1 <


Онлайн :

0 пользователь(ей), 32 гость(ей) :