>>84
% Prolog

構造定義(成績,成績(_番号,_国語,_数学,_英語)).
構造検査(成績,成績(_番号,_国語,_数学,_英語)) :-
    integer(_番号),integer(_国語),integer(_数学),integer(_英語).

'番号 国語 数学 英語のメンバを持っている構造体を作る :-
    '番号 国語 数学 英語のメンバを持っている構造体を作る'(1,L).

'番号 国語 数学 英語のメンバを持っている構造体を作る(_,[]) :-!.
'番号 国語 数学 英語のメンバを持っている構造体を作る(N,[[A,B,C]|R]) :-
    assertz(成績(N,A,B,C)),
    N2 is N + 1,
    '番号 国語 数学 英語のメンバを持っている構造体を作る(N2,R).

各教科の平均値と、全平均値を求める(_各教科の平均,_全平均値) :-
    findavg([_国語,_数学,_英語],(
          成績(_,_国語,_数学,_英語),
        _各教科の平均値ならび),
    findavg(_個人合計,(
          成績(_,_国語,_数学,_英語),
          _個人合計 is _国語 + _数学 + _英語),
        _全平均値).