Создать функцию, использую 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д