このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/791
#  [1] 授業単元:C言語演習 
#  [2] 問題文: 
#  ある教科の5人の得点の入った整数型配列 x[5] および2つの整数型変数max,minを引数とし 
#  最高点と最低点を計算する関数maxminを作成せよ。 
#  そして5人の数学、英語、国語の得点をキーボードからそれぞれ配列m[5], e[5], j[5]に入力すると 
#  各教科の最高点と最低点を計算して表示するプログラムをmaxmin関数を利用して作成せよ。 
#  <条件> 
#  引数maxおよびminは、参照によるアドレス渡しで受け取る。maxmin関数はvoid型となる。 
#  

'ある教科の5人の得点の入った ならび _x および2つの整数型変数_max,_minを引数とし最高点と最低点を計算する'([_得点],_得点,_得点) :- !.
'ある教科の5人の得点の入った ならび _x および2つの整数型変数_max,_minを引数とし最高点と最低点を計算する'([_得点|R],_max,_min) :-
        'ある教科の5人の得点の入った ならび _x および2つの整数型変数_max,_minを引数とし最高点と最低点を計算する'(R,_max,_min),
        'max,minの更新'(_得点,_max_1,_min_1,_max,_min).

'max,minの更新'(_得点,_max_1,_min_1,_max,_min) :-
        maxの更新(_得点,_max_1,_max),
        minの更新(_得点,_min_1,_min).

maxの更新(_得点,_max_1,得点) :-
        _得点 > _max_1,!.
maxの更新(_得点,_max_1,_max_1).

minの更新(_得点,_min_1,得点) :-
        _得点 < _max_1,!.
minの更新(_得点,_min_1,_min_1).

'5人の数学、英語、国語の得点をキーボードから入力すると各教科の最高点と最低点を計算して表示する' :-
        '5人の数学、英語、国語の得点をキーボードから入力すると'(LL),
        '各教科の最高点と最低点を計算して表示する'(LL).

'5人の数学、英語、国語の得点をキーボードから入力すると'(LL) :-
        '5人の'(LL),
        '数学、英語、国語の得点をキーボードから入力すると'(LL).

'5人の'(LL) :-
        length(LL,5).

'数学、英語、国語の得点をキーボードから入力すると'(LL) :-
        findall([_数学,_英語,_国語],(
                    nth1(_,LL,_),
                    get_split_line([',',' '],[_数学,_英語,_国語])),
                LL).

'各教科の最高点と最低点を計算して表示する'(LL) :-
        nth(N,[数学,英語,国語],_教科),
        教科の得点ならび(N,LL,_教科の得点ならび),
        'ある教科の5人の得点の入った ならび _x および2つの整数型変数_max,_minを引数とし最高点と最低点を計算する'(L,_最高点,_最低点),
        writef('教科: %t   最高点: %t  最低点: %t\n',[_教科,_最高点,_最低点]),
        N = 3.

教科の得点ならび(N,LL,_教科の得点ならび) :-
        findall(_得点,(
                    member([_数学,_英語,_国語],LL),
                    nth1(N,[_数学,_英語,_国語],_得点)),
                _教科の得点ならび).