Создать функцию, использую if и cond - Lisp

Узнай цену своей работы

Формулировка задачи:

Написать функцию решения квадратного уравнения используя условные операторы if и cond.
Листинг программы
  1. (defun sq (a b c)
  2. (if (= a 0) (print "Not a quadratic equation") (setq d (- (* b b) (* 4 a c)))
  3. (cond
  4. ((< d 0) (print "No real roots"))
  5. ((= d 0) ( progn
  6. (setq x1 (/ (-x) (* 2 a)))
  7. ( print x1)))
  8. ((> d 0) (progn
  9. (setq x1 (/ (- (-b) (sqrt d)) (* 2 a)))
  10. (setq x2 (/ (+ (-b) (sqrt d)) (* 2 a)))
  11. ( print x1)
  12. ( print x2)))
  13. )
  14. )
  15. )
ОШИБКА: EVAL: слишком много параметров для специального оператора IF

Решение задачи: «Создать функцию, использую if и cond»

textual
Листинг программы
  1. (defun sq (a b c)
  2.   (if (zerop a)
  3.       "Not a quadratic equation"
  4.     (let ((d (- (* b b) (* 4 a c))))
  5.       (cond ((< d 0)
  6.              "No real roots")
  7.             ((zerop d)
  8.              (/ (-x) (* 2. a)))
  9.             (t
  10.              `(,(/ (- (-b) (sqrt d)) (* 2. a))
  11.                ,(/ (+ (-b) (sqrt d)) (* 2. a))))))))

Объяснение кода листинга программы

(1) В первой строке определяется функция с именем sq, которая принимает три аргумента a, b и c. (2) Следующая строка кода проверяет, равно ли значение переменной a нулю. Если это так, то выводится сообщение Not a quadratic equation. (3) Если значение a не равно нулю, то выполняется следующий блок кода. В нем определяется переменная d как результат умножения b на b, умноженный на 4, и результат умножения a на c. (4) Следующий блок кода проверяет значение переменной d. Если оно меньше нуля, то выводится сообщение No real roots. (5) Если значение d равно нулю, то выводится сообщение /x, где x — это значение переменной a, умноженное на 2. (6) Если значение d не равно нулю, то выводятся два значения, которые являются корнями квадратного уравнения. Они вычисляются как результат деления (-b) на sqrt(d) и результат деления (+b) на sqrt(d)), умноженные на 2a.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут