このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286978599/73
#  [1] 授業単元:C言語基礎実習  
#  [2] 問題文(含コード&リンク):0未満の数が入力されるまで 
#  入力を求め、その入力した回数と入力した数値の合計値を表示するプログラムを作成しなさい。 
#  なお、0未満の数は回数と合計値に含めないものとする。 
#  

'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する' :-
        '0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(_入力した回数,_合計値),
         write_formatted('入力した回数 = %t, 合計値 = %t\n',[_入力した回数,_合計値]),!.

'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(_入力した回数,_合計値) :-
        数の入力(I),
        '0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(I,_入力した回数,_合計値).

'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(J,0,0) :- J < 0,!.
'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(J,_回数,_合計値) :-
        数の入力(I),
        '0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(I,_回数_1,_合計値_1),
        _回数 is _回数_1 + 1,
        _合計値 is _合計値_1 + J.

数の入力(I) :-
        write('数を入力してください(終了するには0未満の数を入力) : '),
        get_line(Line),
        数の入力診断(Line,I),!.
数の入力(I) :- 数の入力(I).

数の入力診断(Line,I) :- atom_to_term(Line,I,_),number(I),!.
数の入力診断(Line,I) :-
        write_formatted('入力された %t から適切な数が得られませんでした\n再入力をお願いします\n',[Line]),fail.