このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349527750/867
#  [1] プログラミング基礎  
#  [2] 5人の学生の学生番号、身長、体重を入力し  
#  平均身長ave_heigh、平均体重ave_weightを求める。  
#  ただし、学生番号、身長、身長の平均からの差、体重、体重の平均からの差は 2次元配列data[5][5]に格納するようにすること。  
#   
#  学生番号、身長、体重の各々をkeyにして昇順、降順のどちらでもソートできるようにせよ。  
#  ただし、ソート処理は関数化しソートアルゴリズムには選択ソート、バブルソート、クイックソートの何れかを選択可能とすること。  
#  

'5人の学生の学生番号、身長、体重を入力し、
平均身長、平均体重を求める。  
学生番号、身長、身長の平均からの差、体重、体重の平均からの差を組とするならびに格納する'(_ならび) :-
        '5人の学生の学生番号、身長、体重を入力し'(_5人の学生の学生番号_身長_体重),
        '5人の学生番号、身長、身長の平均からの差、体重、体重を組とするならびに格納する'(_5人の学生の学生番号_身長_体重,_ならび).

'5人の学生の学生番号、身長、体重を入力し'(_5人の学生の学生番号_身長_体重) :-
        findall([_学生番号,_身長,_体重],(
                    between(1,5,_),
                    整数を得る(学生番号,_学生番号 > 0,_学生番号),
                    数を得る(身長,_身長 > 0,_身長),
                    数を得る(体重,_体重 > 0,_体重)),
                _5人の学生の学生番号_身長_体重).

'5人の学生番号、身長、身長の平均からの差、体重、体重を組とするならびに格納する'(_5人の学生の学生番号_身長_体重,_ならび) :-
        '5人の学生番号、身長、身長の平均からの差、体重、体重を組とするならびに格納する'(_5人の学生の学生番号_身長_体重,0,0,_身長の平均,_体重の平均,_ならび).

'5人の学生番号、身長、身長の平均からの差、体重、体重を組とするならびに格納する'([],_身長の合計,_体重の合計,_身長の平均,_体重の平均,[]) :-
        '5人の身長、体重の平均を算出する'(_身長合計,_体重合計,_身長の平均,_体重の平均).
'5人の学生番号、身長、身長の平均からの差、体重、体重を組とするならびに格納する'([[_学生番号,_身長,_体重]|R1],_身長合計_1,_体重合計_1,_身長の平均,_体重の平均,[[_学生番号,_身長,_身長の平均からの差,_体重,_体重の平均からの差]|R2]) :-
        '身長合計、体重合計に加算する'(_身長,_体重,_身長合計_1,_体重合計_1,_身長合計_2,_体重合計_2),
        '5人の学生番号、身長、身長の平均からの差、体重、体重を組とするならびに格納する'(R1,_身長合計_2,_体重合計_2,_身長の平均,_体重の平均,R2),
        '身長の平均からの差、体重の平均からの差を求める'(_身長,_体重,_身長の平均,_体重の平均,_身長の平均からの差,_体重の平均からの差).

'5人の身長、体重の平均を算出する'(_身長合計,_体重合計,_身長の平均,_体重の平均) :-
        _身長の平均 is _身長の合計 / 5,
        _体重の平均 is _体重の合計 / 5.

'身長合計、体重合計に加算する'(_身長,_体重,_身長合計_1,_体重合計_1,_身長合計_2,_体重合計_2) :-
        _身長合計_2 is _身長合計_1 + _身長,
        _体重合計_2 is _体重合計_1 + _体重.

'身長の平均からの差、体重の平均からの差を求める'(_身長,_体重,_身長の平均,_体重の平均,_身長の平均からの差,_体重の平均からの差) :-
        _身長の平均からの差 is _身長 - _身長の平均,
        _体重の平均からの差 is _体重 - _体重の平均.