%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Programma per il calcolo della somma e della media di tutti
% gli elementi di una lista di numeri data
% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%% somma_lista(L,Somma): vero se Somma e' la somma di tutti gli 
%%% elementi della lista L

somma_lista([],0).
somma_lista([X|R],SommaTot) :-
    somma_lista(R,SommaR),
    SommaTot is SommaR + X.

%%% media_lista(L,Media): vero se Media e' la media aritmetica 
%%% degli elementi della lista L

media_lista(L,Media) :-
    lungh_lista(L,N),
    somma_lista(L,S),
    Media is S / N.

%%% lungh_lista(L,N): vero se N e' il numero di elementi 
%%% della lista L

lungh_lista([],0).
lungh_lista([_X|R],LunghTot) :-
    lungh_lista(R,LunghR),
    LunghTot is LunghR + 1.

