Среднее арифметическое отрицательных чисел произвольного списка - Lisp

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

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

Добрый вечер.Нужно вычислить среднее арифметическое отрицательных чисел произвольного списка. Есть НЕ рабочий код, который нужно ИЗМЕНИТЬ, чтобы он заработал и использовал apply
(defun f1 (mylist) 
(f (ff mylist))
(defun ff (mylist) 
(cond
((Null mylist) (cons 0 0))
((listp (car mylist)) (mapcon #'fun (ff (car mylist)) (ff (cdr mylist))))
((minusp (car mylist)) (mapcon #'fun (cons (car mylist) 1) (ff (cdr mylist)))) ((ff (cdr mylist)))
)
(defun fun (mylistl mylist2)
(cons (+ (car mylistl) (car mylist2)) (+ (cdr mylistl) (cdr mylist2)))
(defun f (mylist)
(cond
((> (cdr mylist) 0) (/ (car mylist) (cdr mylist)))
(0)
)
Заранее Спасибо

Решение задачи: «Среднее арифметическое отрицательных чисел произвольного списка»

textual
Листинг программы
(defun task (lst)
  (let* ((ml (remove-if-not #'minusp lst))
         (ll (length ml))
         (sl (apply '+ ml)))
    (if (zerop ll) "Отрицательных элементов нет!" (/ sl ll))))
 
==> task
 
(task '(1 2 -6 7 -7 -8))
 
==> -7

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

В коде определена функция TASK, которая принимает список в качестве аргумента. Внутри функции используется LET* для создания трех вспомогательных переменных:

  1. ML — инициализируется значением списка, в котором все элементы, не являющиеся отрицательными числами, удаляются.
  2. LL — инициализируется значением длины списка ML.
  3. SL — инициализируется значением суммы всех элементов списка ML. Затем проверяется, является ли длина списка ML равной нулю. Если это так, то выводится сообщение Отрицательных элементов нет!. В противном случае, результатом является среднее арифметическое элементов списка ML, которое вычисляется путем деления суммы SL на длину списка LL. Пример использования функции: (task '(1 2 -6 7 -7 -8)) Результатом выполнения кода будет -7.

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


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

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

15   голосов , оценка 4.267 из 5
Похожие ответы