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

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

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

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

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

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

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

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

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