このディレクトリの索引
#  出典 :: C/C++の宿題片付けます 143代目 #7
#  [1] 授業単元:プログラミング 
#  [2] 問題文 
#  ・キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。 
#  ただし、平均値を求める関数 float ave(int a,int b) 
#  を利用すること。 
%  
%  ave()の代わりに述語 二項平均/3 を使うこととする。
%

キーボードから入力した三つの整数値の平均値を求める :-
        キーボードから入力した整数値(_整数の一),
        キーボードから入力した整数値(_整数の二),
        キーボードから入力した整数値(_整数の三),
        三項平均を二項平均だけから求める(_整数の一,_整数の二,_整数の三,_平均値),
        平均値表示(_平均値).

三項平均を二項平均だけから求める(_平均値,_平均値,_平均値,_平均値) :- !.
三項平均を二項平均だけから求める(_整数の一,_整数の二,_整数の三,_平均値) :-
        二項平均(_整数の一,_整数の二,_二項平均の一),
        二項平均(_整数の一,_整数の三,_二項平均の二),
        二項平均(_整数の二,_整数の三,_二項平均の三),
        三項平均を二項平均だけから求める(_二項平均の二,_二項平均の三,_二項平均の一,_平均値).

二項平均(_第一項,_第二項,_二項平均) :-
        _二項平均 is (_第一項 + _第二項) / 2.


平均値表示(_平均値) :-
        writef('平均値は %t です。\n',[_平均値]).


キーボードから入力した整数値(_整数) :-
        write('整数を入力してください : '),
        get_line(Line),
        キーボードから入力した整数値診断(Line,_整数),!.
キーボードから入力した整数値(_整数) :- キーボードから入力した整数値(_整数).

キーボードから入力した整数値診断(Line,_整数) :-
        read_term_from_atom(Line,_整数,[]),
        integer(_整数),!.
キーボードから入力した整数値診断(Line,_整数) :-
        writef('入力された %t からは整数は得られません。再入力をお願いします。\n',[Line]),
        fail.