このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1308749241/720
#  よろしくお願いします。 
#  [1] 授業単元:情報C 
#  [2] 問題文(含コード&リンク):複数人の身長を入力し、入力人数、最大値、最小値 
#  平均値を出力するプログラムを作成せよ。ただし、身長に負の値が入力されたときに 
#  身長の入力を終了することとし、データとして利用しないこと 
#  

'複数人の身長を入力し、入力人数、最大値、最小値、平均値を出力する' :-
        複数人の身長を入力し(_身長ならび),
        length(_身長ならび,_入力人数),
        最大値(_身長ならび,_最大値),
        最小値(_身長ならび,_最小値),
        平均値(_身長ならび,_平均値),
        writef('入力人数: %t\n最大値: %t\n最小値: %t\n平均値: %t\n',[_入力人数,_最大値,_最小値,_平均値]).

複数人の身長を入力し(_身長ならび) :-
        身長を得る(_身長),
        複数人の身長を入力し(_身長,_身長ならび).

複数人の身長を入力し(N,[]) :- N < 0,!.
複数人の身長を入力し(_身長,[_身長|R]) :-
        身長を得る(_身長2),
        複数人の身長を入力し(_身長2,R).

身長を得る(_身長) :-
        write('身長を入力してください(終了する時は負数) : '),
        get_line(Line),
        身長入力診断(Line,_身長),!.
身長を得る(_身長) :-
        身長を得る(_身長).

身長入力診断(Line,_身長) :-
        atom_to_term(Line,_身長,_),
        integer(_身長),
        _身長 > 0,!.
身長入力診断(Line,_身長) :-
        writef('入力された%tは身長として適切な値を取りません。再入力をお願いします。\n',[Line]),
        fail.