Ybadoo - Soluções em Software Livre
Tutoriais
Programação Orientada a Objetos

Desenvolver um programa em Prolog que apresente a média dos elementos contidos em uma lista, como no exemplo a seguir.

?- media([1, 2, 3, 4, 5], M), write(M), nl.
3

 

Arquivo media.pl

% Contar o número de elementos de uma lista
quantidade([], 0).
quantidade([_|CDR], N) :- quantidade(CDR, AuxQ), N is AuxQ + 1.

% Somar os elementos de uma lista
somatorio([], 0).
somatorio([CAR|CDR], N) :- somatorio(CDR, AuxQ), N is AuxQ + CAR.

% Função média
media(Lista, Media) :- quantidade(Lista, N), somatorio(Lista, S), Media is 	S / N.

?- media([1, 2, 3, 4, 5], M), write(M), nl.
3