このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286978599/643
#  [1] 授業単元:C言語 
#  [2] 問題文(含コード&リンク): 
#  (1)ある10人の年齢がint score[] = {21, 70, 17, 12, 15, 80, 55, 43, 34, 48}; 
#     で与えられている時、年齢の平均を求めるプログラムを作成せよ。 
#     ただし、ユーザー定義関数averageを定義してプログラムを作成すること。 
#  ※第一引数として年齢データの配列、第二引数として人数を受け取り、平均値を返すこと。 
#                 
#  (2)(1)の年齢をそれぞれ二乗して足した値の平均値を求めるプログラムを作成せよ。 
#    ただし、ユーザー定義関数averageを定義してプログラムを作成すること。 
#  ※第一引数として年齢データの配列、第二引数として人数を受け取り、平均値を返すこと。 
#  ※(2)についてはプロトタイプ宣言を使用すること。 
#   
#  

'ある10人の年齢がint score[] = {21, 70, 17, 12, 15, 80, 55, 43, 34, 48}; で与えられている時、年齢の平均を求める' :-
        split('{21, 70, 17, 12, 15, 80, 55, 43, 34, 48}',['{','}',',',' '],L),
        avarage(L,10,_平均),
        write_formmate('10人の年齢の平均は%t歳です\n',[_平均]).

avarage(L,_要素数,_平均) :-
        avarage(L,_要素数,0,_平均).

avarage([],_要素数,_これまでの合計,_平均) :-
        \+(_要素数=0),
        _平均 is _これまでの合計 / _要素数,!.
avarage([N|R],_要素数,_これまでの合計1,_平均) :-
        _これまでの合計2 is N + _これまでの合計1,
        avarage(R,_要素数,_これまでの合計2,_平均).