Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контрольная по LISP 
:(
    Опции темы
Roy73
Дата 17.11.2011, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.11.2011

Репутация: нет
Всего: нет



Помогите пожалуйста с решением контрольной по Лиспу:


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





2. Записать определение функции F2 на языке программирования Common Lisp, которая анализировала бы свойства элементов списка созданного функцией F1 и выводила на экран элемент и его свойства, удовлетворяющие определенному правилу. Правило выбирается в соответствии с номером студенческого билета. Формат вывода:
(xi соответствует свойство Yj равное Yj (xi)) 
Где xi, Yj (xi) – соответственно числовые значения xi и Yj (xi).

Условие для первой задачи в прикрепленном файле.

Условие для второй задачи:
Вывести те элементы, у которых средние значения функций  Y1(xk), Y2(xk), Y3(xk), Y4(xk) отличаются не более чем на 1.

Задание выполнять в среде Lisp Works. При определении функции F1 использовать PROG-механизм (для организации циклов) и условное предложение COND. При определении функции F2 использовать циклическое предложение DO и условное предложение IF. При выделении элемента из списка пользоваться только комбинациями функций CAR и  CDR (NTH не использовать).


Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  _________________.doc 28,50 Kb
PM MAIL   Вверх
k0rvin
Дата 24.11.2011, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



1) выкладывать *.doc -- дурной тон, у читателей может и не быть MS Word =)
2) в первом задании для y2 ты не указал условия
3) во втором задании вообще непонятно, что за средние значения

Код

(defvar x1 0)
(defvar x2 0)
(defvar x3 0)
(defvar x4 0)

(defvar xs '(x1 x2 x3 x4))

(defun y1 (x)
  (cond ((> x 3)
         (+ (* x (sin x))
            (/ (expt (cos x) 2)
               (expt x 2))))
        ((and (<= 0 x)
              (<  x 1))
         (+ (sqrt (+ (expt x 3) 3))
            (/ 1 (expt (* 3 (tan (1+ (* 0.3 x))))
                       1/3))))
        (t
         (+ 2 (- x) (* 6 (expt x 4))))))

(defun y2 (x)
  (cond (:foo
         (+ (tanh (expt x 3))
            (* 3 (expt (sinh x) 4))))
        (:bar
         (+ (log (/ (expt x 3)
                    (+ x 4))
                 7)
            (/ 2 x)))
        (t
         (expt x (1+ (sin x))))))

(defun y3 (x)
  (cond ((> x 1.5)
         (+ (expt x 2)
            (* 6 x)
            20))
        ((and (<  0.5 x)
              (<=  x  1))
         (+ (/ 1 (sqrt (* 3 x)))
            (/ 1 (acos (+ (* 0.6 (expt x 2))
                          0.5)))))
        (t
         (* (expt x -1.5)
            (log (- 2 x))))))

(defun y4 (x)
  (cond ((and (<= -2 x)
              (<   x 2))
         (+ (expt x -3)
            (* 3 (sin (/ x 3)))))
        ((> x 3)
         (log (- (expt x 6)
                 (sqrt x))
              8))
        (t
         (/ (+ (expt 2 x)
               (expt 3 (1+ x))
               (- (* 6 x)))
            (log 2)))))

(defvar ys '(y1 y2 y3 y4))

(defun get-elem (list index)
  (if (< index 0)
      (error "index must be >= 0")
      (do ((l list  (cdr l))
           (i index (1-  i)))
          ((null l) (error "index too large"))
        (if (= i 0) (return-from get-elem (car l))))))

(defun f1 ()
  (prog ((i   0)
         (xi  nil)
         (num nil))
    (princ "Type four numbers: ")
    loop (setf num (read))
         (cond ((not (numberp num)) (go loop)))
         (setf xi (get-elem xs i))
         (set  xi num)
         (incf i)
         (prog ((j  0)
                (yj nil))
           calc (setf yj (get-elem ys j))
                (setf (get xi yj) (funcall yj (symbol-value xi)))
                (incf j)
                (cond ((< j 4) (go calc))))
         
         (cond ((< i 4) (go loop)))))

(defun f2 ()
  (do ((xs xs (cdr xs)))
      ((null xs) nil)
    (do ((ys ys (cdr ys)))
        ((null ys) nil)
      (format t "~a(~a) = ~a~%"
              (car ys)
              (car xs)
              (get (car xs) (car ys))))
    (terpri)))



--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0862 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.