このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1322562648/743
#  [1] 授業単元:情報処理 
#  [2] 問題文(含コード&リンク): 
#  http://ime.nu/ideone.com/uhaD9  
#  
#  キーボードから5 個の整数を入力し,最大値,最小値,平均値を計算するプログラムを,以下の条件に従って作成せよ.
#  1) キーボードからn個の整数を入力して配列arrayに格納する関数
#    「void input( int *array,int n)」を作成すること.
#  2) n 個の要素からなる配列array に対して,最大値を算出して返す関数
#    「int max( int *array, int n )」を作成すること.
#  3) n 個の要素からなる配列array に対して,最小値を算出して返す関数
#    「int min( int *array, int n )」を作成すること.
#  4) n 個の要素からなる配列array に対して,平均値を算出して返す関数
#    「double avg( int *array, int n )」を作成すること.
#  5) main関数では,1)~4)の関数をすべて呼び出すこと.

program :-
        'キーボードからn個の整数を入力してならびに格納する'(5,_ならび),
        'ならびの最大値を返す'(_ならび,_最大値),
        'ならびの最小値を返す'(_ならび,_最小値),
        'ならび要素の平均値を返す'(_ならび,_平均値),
        writef('ならび要素は%t\n最大値は%t\n最小値は%t\n平均値は%t\n',[_ならび,_最大値,_最小値,_平均値]).

'キーボードからn個の整数を入力してならびに格納する'(_n,_ならび) :-
        length(_ならび,_n),
        findall(_整数,(
                    append(_,[_整数|_],_ならび),
                    整数入力(_整数)),
               _ならび).

整数入力(_整数) :-
        write('整数を入力して下さい : '),
        get_line(Line),
        整数入力診断(Line,_整数),!.
整数入力(_整数) :-
        整数入力(_整数).

整数入力診断(Line,_整数) :-
        atom_to_term(Line,_整数,_),
        integer(_整数),!.
整数入力診断(Line,_整数) :-
        writef('入力された %t から整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

'ならびの最大値を返す'(_ならび,_最大値) :-
        max(_ならび,_最大値).

'ならびの最小値を返す'(_ならび,_最小値) :-
        min(_ならび,_最小値).

'ならび要素の平均値を返す'(_ならび,_平均値) :-
        avg(_ならび,_平均値).