このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1258158172/339
#  [1] 授業単元: プログラミング 
#  [2] 問題文(含コード&リンク):5人の学生の3教科(国・数・英)の点数を 
#  読み込んで、2次元配列を用いて以下の条件を満たすプログラムを作成せよ。 
#  (1)科目別の最高点を求める。 
#  (2)各学年の3教科の平均を求める。 
#  これらを表にして表示する。  
# 

'5人の学生の3教科(国・数・英)の点数を読み込んで、2次元配列を用いて、科目別最高点、3教科の平均を表示' :-
    findall(L,(for(1,N,5),get_line(Line),split(Line,[','],L)),_学生の得点ならび),
    科目別最高点(_学年の得点ならび,[_国最高点,_数最高点,_英最高点]),
    write('科目別最高点,国,数,英\n'),
    write_formatted(',%t,%t,%t\n',[_国最高点,_数最高点,_英最高点]),
    どんな学年があるか(_学生の得点ならび,_学年ならび),
    write('学年別、科目別平均点\n'),
    member(_学年,_学年ならび),
    findavg([_国,_数,_英],member([_学年,_国,_数_英],_学年の得点ならび),[_国平均,_数平均,_英平均]),
    member([_学年,_国平均,_数平均,_英平均],_各学年の3教科の平均),
    write_formatted('%t,%t,%t,%t\n',[_学年,_国平均,_数平均,_英平均]),
    fail.
'5人の学生の3教科(国・数・英)の点数を読み込んで、2次元配列を用いて、科目別最高点、3教科の平均を表示'.

科目別最高点(_学年の得点ならび,_科目別最高点) :-
    行列の転置(_学年の得点ならび,[_|L1]),
    findall(Max,(member(L2,L1),max(L2,Max)),_科目別最高点).

どんな学年があるか(_学生の得点ならび,_学年ならび) :-
    findall(_学年,member(_学年,_学年の得点ならび),L),
    sort(L,_学年ならび).