このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1305867431/113
#  【質問テンプレ】  
#  [1]Cプログラミング 
#  [2]10人の身長(150cm〜180cm)を任意にキーボードから入力し、 
#    160cm以上の人数と未満の人数、およびそれらの平均値を求めよ。  
#  

'10人の身長(150cm〜180cm)を任意にキーボードから入力し、160cm以上の人数と未満の人数、およびそれらの平均値を求める'(_160cm以上の人数,_160cm未満の人数,_160cm以上の平均,_160cm未満の平均) :-
        length(_10人の身長ならび),
        '10人の身長(150cm〜180cm)を任意にキーボードから入力し'(_10人の身長ならび),
        '160cm以上の人数と未満の人数、およびそれらの平均値を求める'(_10人の身長ならび,_160cm以上の人数,_160cm未満の人数,_160cm以上の平均,_160cm未満の平均).

'10人の身長(150cm〜180cm)を任意にキーボードから入力し'([]) :- !.
'10人の身長(150cm〜180cm)を任意にキーボードから入力し'([_身長|R]) :-
        get_line(Line),
        '10人の身長(150cm〜180cm)を'(Line,_身長),
        '10人の身長(150cm〜180cm)を任意にキーボードから入力し'(R),!.
'10人の身長(150cm〜180cm)を任意にキーボードから入力し'(L) :-
        '10人の身長(150cm〜180cm)を任意にキーボードから入力し'(L).

'10人の身長(150cm〜180cm)を'(Line,_身長) :-
        atom_to_term(Line,_身長,_),
        integer(_身長),
        _身長 >= 150,
        _身長 =< 180.

'160cm以上の人数と未満の人数、およびそれらの平均値を求める'(_10人の身長ならび,_160cm以上の人数,_160cm未満の人数,_160cm以上の平均,_160cm未満の平均) :-
        '160cm以上の人数'(_10人の身長ならび,_160cm以上の人数),
        '160cm未満の人数'(_10人の身長ならび,_160cm未満の人数),
        '160cm以上の平均'(_10人の身長ならび,_160cm以上の平均),
        '160cm未満の平均'(_10人の身長ならび,_160cm未満の平均).

'160cm以上の人数'(_10人の身長ならび,_160cm以上の人数) :-
        count((append(_,[_身長|_],_10人の身長ならび),_身長 >= 160),_160cm以上の人数).

'160cm未満の人数'(_10人の身長ならび,_160cm未満の人数) :-
        count((append(_,[_身長|_],_10人の身長ならび),_身長 <  160),_160cm未満の人数).

'160cm以上の平均'(_10人の身長ならび,_160cm以上の人数) :-
        findavg(_身長,(
                    append(_,[_身長|_],_10人の身長ならび),
                    _身長 >= 160),
                _160cm以上の平均).

'160cm未満の平均'(_10人の身長ならび,_160cm未満の人数) :-
        findavg(_身長,(
                    append(_,[_身長|_],_10人の身長ならび),
                    _身長 <  160),
                _160cm未満の人数).