Вычислить среднее арифметическое элементов списка - Prolog (226407)

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

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

помогите вычислите среднее арифметическое его элементов
Листинг программы
  1. DOMAINS
  2. LIST = integer*
  3. PREDICATES
  4. append(LIST,integer,LIST)
  5. CLAUSES
  6. append([],X,[X]).
  7. append([H|Xs],X,[H|Ys]):-
  8. append(Xs,X,Ys).
  9. GOAL
  10. append( [1,2,3], 4, N ).

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

textual
Листинг программы
  1. domains
  2. reall=real*
  3.  
  4. predicates
  5. sumn(reall,real,real)
  6. avg(reall,real)
  7.  
  8. clauses
  9. sumn([],0,0).
  10. sumn([H|T],N,S) :- sumn(T,N1,S1), N=N1+1, S=S1+H.
  11.  
  12. avg(X,A) :- sumn(X,N,S), A=S/N.

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

  1. domains - определяются типы данных для переменных. В данном случае, переменная reall является числовой (real*).
  2. predicates - определяются функции, которые могут быть решены как истинные или ложные. В данном случае, определены две функции: sumn и avg.
  3. clauses - определяются конкретные решения функций. В данном случае, определено два правила: одно для функции sumn, другое для функции avg.
  4. sumn([],0,0). - это правило для функции sumn, которое гласит, что если входной список пуст, то сумма элементов списка равна 0, а переменные N и S не изменяются.
  5. sumn([H|T],N,S) :- sumn(T,N1,S1), N=N1+1, S=S1+H. - это правило для функции sumn, которое гласит, что если входной список не пуст, то сумма элементов списка равна сумме элементов оставшейся части списка (T) и текущего элемента (H), а переменные N и S изменяются соответственно.
  6. avg(X,A) :- sumn(X,N,S), A=S/N. - это правило для функции avg, которое гласит, что если входной список X и сумма его элементов S решены, то среднее арифметическое элементов списка (A) равно S, деленному на N.

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


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

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

10   голосов , оценка 4.1 из 5

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

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

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