Среднее арифметическое списка - Prolog (226697)

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

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

Помогите пожалуйста!!! Напишите предикат, находящий среднее арифметическое списка

Решение задачи: «Среднее арифметическое списка»

textual
Листинг программы
domains
rl=real*
 
predicates
suml(rl,real)
numl(rl,real)
avgl(rl,real)
 
clauses
suml([],0.0).
suml([H|T],S) :- suml(T,S1), S=S1+H.
 
numl([],0.0).
numl([_|T],S) :- numl(T,S1), S=S1+1.0.
 
avgl(X,A) :- suml(X,S), numl(X,N), A=S/N.

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

  1. В коде используется язык программирования Prolog.
  2. Код включает в себя три предиката: suml, numl, avgl.
  3. Предикат suml используется для вычисления суммы элементов списка.
  4. Предикат numl используется для подсчета количества элементов в списке.
  5. Предикат avgl используется для вычисления среднего арифметического списка.
  6. В коде присутствуют два множества правил (clauses) для каждого из предикатов.
  7. Первое множество правил для предиката suml описывает начальное условие (suml([],0.0)) и правило рекурсии (suml([H|T],S) :- suml(T,S1), S=S1+H).
  8. Второе множество правил для предиката numl описывает начальное условие (numl([],0.0)) и правило рекурсии (numl([_|T],S) :- numl(T,S1), S=S1+1.0).
  9. Первое множество правил для предиката avgl описывает правило вычисления среднего арифметического (avgl(X,A) :- suml(X,S), numl(X,N), A=S/N).
  10. Код не содержит описания входных данных или вывода результатов.

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

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