Функция для вычисления значения полинома - Lisp

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

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

Здравствуйте! Помогите с задачей, пожалуйста: Написать функцию для вычисления значения полинома для заданного аргумента по схеме Горнера. Коэффициенты полинома заданы в виде списка или одномерного массива. Предусмотреть проверку корректности данных.

Решение задачи: «Функция для вычисления значения полинома»

textual
Листинг программы
(defun task (coeff arg)
  (try 
       (poly-val coeff arg)
   except
       (errormessage))) 
 
==> TASK
 
(task '(1 2 3) 7)
 
==> 66
 
(task '(1 a 3) 7)
 
==> "PLUS: Один из аргументов (A) имеет нечисловой тип"

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

В коде определена функция с именем task. Она принимает два аргумента: coeff и arg. Первый аргумент представляет собой список коэффициентов полинома, а второй — значение переменной, которое нужно подставить в полином. Внутри функции происходит следующее:

  1. Вычисляется значение полинома с помощью функции poly-val, в которую передаются аргументы coeff и arg.
  2. Если что-то пошло не так (то есть значение полинома не вычислилось), то выводится сообщение об ошибке с помощью функции errormessage. При вызове функции task со списком коэффициентов '(1 2 3) и аргументом 7, результатом будет число 66. Это результат вычисления полинома 1 + 27 + 37^2 = 66. При вызове функции task со списком коэффициентов '(1 a 3) и аргументом 7, результатом будет сообщение об ошибке PLUS: Один из аргументов (A) имеет нечисловой тип. Это происходит потому, что функция poly-val ожидает числовые значения для вычисления полинома, а аргумент 'a не является числом.

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

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