このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1312201995/563
#  http://ime.nu/codepad.org/bsGYVXWW  
# 
#  #include 
#  #define student 4
#  #define score 3
#  int main(){
#  	int i, j;
#  	int a[student][score];
#  	int num[3];
#  	for(i=0; i= 0,
        _成績 =< 100,!.
成績入力検査(Line,_成績) :-
        writef('入力された%tからは科目成績として適切な整数が得られませんでした。再入力をお願いします。\n',[Line]),
        fail.

'その学生別平均と'(LL,_学生別平均ならび) :-
        findall(_平均,(
                    append(_,[L|_],LL),
                    相加平均(L,_平均)),
                _学生別平均ならび).

'科目別平均を'(LL,_科目別平均ならび) :-
        転置(LL,LL1),
        findall(_平均,(
                    append(_,[L|_],LL1),
                    相加平均(L,_平均)),
                _科目別平均ならび).

相加平均([],N,S,M) :-
        M is S / N,!.
相加平均([A|R],N,S,M) :-
        S1 is S + A,
        相加平均(R,N,S1,M).

相加平均(L,M) :-
        length(L,N),
        相加平均(L,N,0.0,M).

転置([],[],[]) :- !.
転置([[A|R1]|R2],[R1|R3],[A|R4]) :-
        転置(R2,R3,R4).

転置([[]|_],[]) :- !.
転置(L,[L1|R2]) :-
        転置(L,L2,L1),
        転置(L2,R2).