このディレクトリの索引

:- dynamic(tmp/2).

入力された点数の相加平均を表示する :-
        点に999が入るまで入力を続ける([],Ln),
        点数を合計する([],Ln,0,_合計),
        length(Ln,_人数),
        _相加平均 is _合計 / 人数,
        writef('平均点は %t です\n',[_相加平均]).

点に999が入るまで入力を続ける(Ln_1,Ln_2) :-
        整数を得る('点数(999の入力で終了)',_点数),
        \+(_点数 = 999),
        assertz(tmp(Ln_1,_点数)),
        点に99が入るまで入力を続ける([_|Ln_1],Ln_2).
点に999が入るまで入力を続ける(Ln,Ln).

点数を合計する(Ln,Ln,_合計,_合計) :- !.
点数を合計する(Ln_1,Ln_2,_合計_1,_合計) :-
        tmp(Ln_1,_数),
        _合計_2 is _合計_1 + _数,
        点数を合計する([_|Ln_1],Ln_2,_合計_2,_合計).