このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1294061094/626
#  [1] 授業単元:プログラミング演習  
#  [2] 問題文(含コード&リンク) 
#  
#  問題1メイン関数でキーボードから二つの整数n1とn2を読み込み,それらをexponent関数を呼び出して,
#  n1のn2乗を計算し,結果をメイン関数で表示するプログラムを書きなさい.
#  <実行例>
#  二つの整数を入力してください.
#  n1 = 5
#  n2 = 2
#  5の2乗は25です.
#  問題2 5人の点数を読み込んでいき、その最高点を表示するプログラムを作成しなさい。
#  問題3 円の面積の一覧表を計算するプログラムを作成しなさい。
#  <実行結果>
#  半径 --- 面積
#  1.0 --- 3.14
#  1.1 --- 3.80
#  1.2 --- 4.52
#  1.3 --- 5.31
#  問題4 球の体積を計算するプログラムを作成しなさい。
#  実行例
#  体積 = 1766.25

'5人の点数を読み込んでいき、その最高点を表示する' :-
        '5人の点数を読み込んでいき'(_5人の点ならび),
        最高点を表示する(_5人の点ならび).

'5人の点数を読み込んでいき'(_5人の点ならび) :-
        length(_5人の点ならび,5),
        findall(_点数,(
                    append(L0,[_点数|_],_5人の点ならび),
                    点数を得る(L0,_点数)),
                _5人の点ならび),!.

点数を得る(L0,_点数) :-
        length([_|L0],N人目),
        writef('%t人目の点数を入力してください : ',[N人目]),
        get_line(Line),
        点数の入力診断(Line,_点数),!.
点数を得る(L0,_点数) :-
        点数を得る(L0,_点数).

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

最高点を表示する(_5人の点ならび) :-
        最高点を(_5人の点ならび,_最高点),
        表示する(_最高点).

最高点を(_5人の点ならび,_最高点) :-
        sort(_5人点ならび,_昇順に整列した5人の点ならび),
        last(_昇順に整列した5人の点ならび,_最高点).

表示する(_最高点) :-
        writef('最高点は%tです\n',[_最高点]).