Добавление условий в текст программы - Lisp
Формулировка задачи:
есть задача, найти наибольшее по модулю число в списке с подписками. на комментарии не смотрите, там половина чушь, сам писал
введу так (max_abs '(15 (((9 2) -64) -91 8) -73))
выводит правильно -73
если так
(max_abs '(15 (((9 2) -64) -91 "8") -73))
то вот так получается
t to > should be a real number: "8"
или
(max_abs '(15 (((9 2) -64) -91 d) -73))
t to > should be a real number: D
как добавить учет этих самых символов, чтобы в списке с числами могли быть символы, а программа не ругалась и продолжала сравнивать числа
(defun max_abs (li_st);declaration the function with arguments "li_st" "This function finds the largest modulo value in the list" (cond ((atom li_st) li_st) ; if on the entrance is served by an atom, it is the maximum ((null (cdr li_st)) (car li_st)) ; If the element is the only one in the list, then it is maximum (t (let ((a1 (abs (max_abs (car li_st)))) ; take the maximum of the head (a1) (a2 (abs (max_abs (cdr li_st))))) ; take the maximum of the tail (a2) (if (> a1 a2) a1 a2)))) ;return the maximum of a1 and a2 )
Решение задачи: «Добавление условий в текст программы»
textual
Листинг программы
(if (numberp list) (abs list) list
Объяснение кода листинга программы
- В данном коде используется условная конструкция
if
. - Условие для проверки —
(numberp list)
. - Значение переменной
list
будет проверяться на число. - Если условие
(numberp list)
истинно, то выполнится блок кода: (abs list)
— это функция, которая будет применяться к значению переменнойlist
, если условие истинно.- Функция
abs
возвращает абсолютное значение числа. - Если условие
(numberp list)
ложно, то выполнится блок кода: list
— это значение переменнойlist
, которое будет возвращено, если условие ложно.- В данном коде нет использования функций, кроме
abs
иnumberp
. - В данном коде нет использования переменных, кроме
list
. - В данном коде нет использования операторов, кроме
if
. - В данном коде нет использования встроенных конструкций языка программирования, кроме условной конструкции
if
. - В данном коде нет использования символов, кроме кавычек.
- В данном коде нет использования комментариев.
- В данном коде нет использования макросов.
- В данном коде нет использования циклов.
- В данном коде нет использования условий.
- В данном коде нет использования операций.
- В данном коде нет использования функций, которые принимают аргументы.
- В данном коде нет использования встроенных функций языка программирования, кроме
abs
иnumberp
.