Не могу понять ошибку - Lisp

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

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

ну я типо студент и делалось все на "интуитивном" уровне и я хз че над сделать, выдает ошибку: Помогите, пожалуйста, найти причину ошибки ";; Error: Call to undefined function SP in USL2" в следующем коде: я не поиму откуда взялась ошибка связанная с функцией =\ хелпоните плз, а то просидел несколько часов, а ошибку так и не понял =(
Листинг программы
  1. (defun SRA (st) ;sr. arifm.
  2. (setq sr 0)
  3. (setq out 0)
  4. (setq i 0)
  5. (dolist (el st out)
  6. (setq i (+ i 1))
  7. (setq out (+ out el))
  8. )
  9. (setq sr (/ out i))
  10. )
  11. (defun ZZ(x) ;
  12. (setq x (* x -1))
  13. )
  14.  
  15. #|smena znaka +/- esli abs el-ta > sr. arifm.|#
  16. (defun usl2(sp)
  17. (setq dopst())
  18. (dolist (el sp dopst)
  19. (cond ((> (abs el) (SRA(sp))) ;true
  20. (cons (ZZ(el)) dopst)
  21. )
  22. (t ;else
  23. (cons el dopst)
  24. )
  25. )
  26. )
  27. (setq sp dopsp)
  28. )
  29. (usl2 '(2 4 6 8)); ne pashet =\

Решение задачи: «Не могу понять ошибку»

textual
Листинг программы
  1. (defun abs-average (w &aux (m (float (/ (reduce #'+ w) (length w)))))
  2.   (loop for a in w collect (if (> (abs a) m) (* a -1) a)))
  3.  
  4. > (abs-average '(1 2 3 4))
  5. (1 2 -3 -4)

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

В этом коде функция abs-average вычисляет среднее арифметическое элементов вектора w, которые больше среднего значения m. Список выражений в коде:

  1. (defun abs-average (w &aux (m (float (/ (reduce #'+ w) (length w)))))
    • Создает функцию abs-average, которая принимает аргумент w и вспомогательную переменную m.
    • m инициализируется как среднее значение элементов вектора w, используя функцию reduce для суммирования всех элементов вектора w и деления на длину вектора.
  2. `(loop for a in w collect (if (> (abs a) m) (* a -1) a))]
    • Начинает цикл loop для каждого элемента a в векторе w.
    • Если abs(a) больше m, то элемент умножается на -1.
    • Все элементы, удовлетворяющие условию, собираются в новый вектор.
  3. > (abs-average '(1 2 3 4))
    • Вызывает функцию abs-average с аргументом '(1 2 3 4).
    • Результатом будет (1 2 -3 -4).

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


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

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

15   голосов , оценка 3.933 из 5

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

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

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