Вычислить среднее арифметическое элементов списка - Prolog (226407)
Формулировка задачи:
помогите вычислите среднее арифметическое его элементов
Решение задачи: «Вычислить среднее арифметическое элементов списка»
textual
Листинг программы
domains reall=real* predicates sumn(reall,real,real) avg(reall,real) clauses sumn([],0,0). sumn([H|T],N,S) :- sumn(T,N1,S1), N=N1+1, S=S1+H. avg(X,A) :- sumn(X,N,S), A=S/N.
Объяснение кода листинга программы
- domains - определяются типы данных для переменных. В данном случае, переменная reall является числовой (real*).
- predicates - определяются функции, которые могут быть решены как истинные или ложные. В данном случае, определены две функции: sumn и avg.
- clauses - определяются конкретные решения функций. В данном случае, определено два правила: одно для функции sumn, другое для функции avg.
- sumn([],0,0). - это правило для функции sumn, которое гласит, что если входной список пуст, то сумма элементов списка равна 0, а переменные N и S не изменяются.
- sumn([H|T],N,S) :- sumn(T,N1,S1), N=N1+1, S=S1+H. - это правило для функции sumn, которое гласит, что если входной список не пуст, то сумма элементов списка равна сумме элементов оставшейся части списка (T) и текущего элемента (H), а переменные N и S изменяются соответственно.
- avg(X,A) :- sumn(X,N,S), A=S/N. - это правило для функции avg, которое гласит, что если входной список X и сумма его элементов S решены, то среднее арифметическое элементов списка (A) равно S, деленному на N.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д