Создать функцию, использую if и cond - Lisp
Формулировка задачи:
(defun sq (a b c) (if (= a 0) (print "Not a quadratic equation") (setq d (- (* b b) (* 4 a c))) (cond ((< d 0) (print "No real roots")) ((= d 0) ( progn (setq x1 (/ (-x) (* 2 a))) ( print x1))) ((> d 0) (progn (setq x1 (/ (- (-b) (sqrt d)) (* 2 a))) (setq x2 (/ (+ (-b) (sqrt d)) (* 2 a))) ( print x1) ( print x2))) ) ) )
Решение задачи: «Создать функцию, использую if и cond»
(defun sq (a b c) (if (zerop a) "Not a quadratic equation" (let ((d (- (* b b) (* 4 a c)))) (cond ((< d 0) "No real roots") ((zerop d) (/ (-x) (* 2. a))) (t `(,(/ (- (-b) (sqrt d)) (* 2. a)) ,(/ (+ (-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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д