このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1312201995/651
#  [1] 授業単元:C言語システムプログラミング  
#  [2] 問題文(含コード&リンク):  
#  複数の整数を入力した後,その一覧に最大(Max)と最小(Min)の印を付けて表示するプログラムを作成せよ. 
#  但し,初めに入力する個数を入力する.(入力数は最大10とする) 
#  実行例↓ 
#  Number? 4 
#  Score1? 40 
#  Score2? 90 
#  Score3? 80 
#  Score4? 30 
#  ***Result*** 
#  1  40 
#  2  90  Max 
#  3  80 
#  4  30  Min 
#   

'複数の整数を入力した後,その一覧に最大(Max)と最小(Min)の印を付けて表示する' :-
        '複数の整数を入力した後'(_整数ならび),
        'その一覧に最大(Max)と最小(Min)の印を付けて表示する'(_整数ならび).

'複数の整数を入力した後'(_整数ならび) :-
        '整数の個数を入力する'(_整数の個数),
        '複数の整数を入力した後'(_整数の個数,_整数ならび).

'整数の個数を入力する'(_整数の個数) :-
        write('整数の個数を入力してください : '),
        get_line(Line),
        '整数の個数を入力検査'(Line,_整数の個数),!.
'整数の個数を入力する'(_整数の個数) :-
        '整数の個数を入力する'(_整数の個数).

'整数の個数を入力検査'(Line,_整数の個数) :-
        atom_to_term(Line,_整数の個数,_),
        integer(_整数の個数),
        _整数の個数 > 0,!.
'整数の個数を入力検査'(Line,_整数の個数) :-
        writef('入力された%tからは適切な整数の個数は得られませんでした。再入力をお願いします。\n',[Line]),
        fail.

'複数の整数を入力した後'(_整数の個数,_整数ならび) :-
        length(_整数ならび,_整数の個数),
        findall(_整数,(
                    append(_,[_整数|_],_整数ならび),
                    整数を入力する(_整数)),
               _整数ならび).

'その一覧に最大(Max)と最小(Min)の印を付けて表示する'(_整数ならび) :-
        最大値(_整数ならび,_最大値),
        最小値(_整数ならび,_最小値),
        append(_,[_整数,|R],_整数ならび),
        writef('%4c ',[_整数]),
        最大値の表示(_整数,_最大値),
        最小値の表示(_整数,_最小値),
        write('\n'),
        R = [].                

最大値の表示(_最大値,_最大値) :-
        writef('Max ',[_最大値]),!.
最大値の表示(_,_).

最小値の表示(_最小値,_最小値) :-
        writef('Min ',[_最小値]),!.
最小値の表示(_,_).