このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1357748713/609
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文(含コード&リンク) 
#  問題1 キーボードから入力した複数個の整数の、加算と積算の計算結果を表示するプログラムを作成しなさい。
ただし、このプログラムは、連続して実行される前半と後半の2部構成で作成してください。 
#  0が入力された時点で、入力処理を終了し結果の表示を行ってください。 
#  すなわち、前半の処理では、キーボードから入力した数値の加算合計の表示を、0が入力されるまで繰返し、後半の処理ではキーボードから入力した数値の積算値の表示を、0が入力されるまで繰返すプログラムを作成してください。 
#  【条件】 
前半の「和を求める」繰返しは while 文、後半の「積を求める」繰返しは do-while 文を使用して作成すること。 
#  【実行例】
=加算処理= 
#  
値:6
 
#  値:8 
#  
値:12
 
#  値:0 
#  
合計は26です。 
#  
=積算処理= 
#  
値:2 
#  
値:6 
#  
値:3 
#  
値:3 
#  
値:0
 
#  積算値は108です。 
#  問題2 繰返し処理を用いて、m ÷ nの計算をするプログラム(商を求める)を作成しなさい。 
ただし、演算に割り算記号 / を使ってはいけません。また、mとnはキーボードから入力してください。 
#  【ヒント】 
・割り算をするとは、mからnを何回引くことができたか?を調べることと等価です 。元の数mが正の間、nを引くことができた回数が、割り算の商となります。 
#  この回数を、 繰返し処理を使って数えさせてください。 
・繰返し条件は、「mからnを引いた結果が正の値の間」繰り返し、商を1ずつ増やしていきます。 
#  負の値になったら、繰返しを終了します。 
#  

'問題1 キーボードから入力した複数個の整数の、加算と積算の計算結果を表示するプログラムを作成しなさい。
ただし、このプログラムは、連続して実行される前半と後半の2部構成で作成してください。
0が入力された時点で、入力処理を終了し結果の表示を行ってください。
すなわち、前半の処理では、キーボードから入力した数値の加算合計の表示を、0が入力されるまで繰返し、
後半の処理ではキーボードから入力した数値の積算値の表示を、0が入力されるまで繰返すプログラムを作成してください。' :-
        'キーボードから複数個の整数を入力する(0が入力されるまで繰返す)'(_整数ならび),
        '前半の処理では、キーボードから入力した数値の加算合計の表示を'(_整数ならび),
        '後半の処理ではキーボードから入力した数値の積算値の表示を'(_整数ならび).

'キーボードから複数個の整数を入力する(0が入力されるまで繰返す)'(_整数ならび) :-
        findall(_整数,(
                    整数を得る('整数(0の入力で終了)',true,_整数),
                    (   _整数 = 0,!,fail; true)),
                _整数ならび).

'前半の処理では、キーボードから入力した数値の加算合計の表示を'(_整数ならび) :-
        atomic_list_concat(_整数ならび,' + ',_加算対象文字列),
        atom_to_term(_加算対象文字列,_加算式,_),
        _加算合計 is _加算式,
        writef('%t = %t\n',[_加算対象文字列,_加算合計]).

'後半の処理ではキーボードから入力した数値の積算値の表示を'(_整数ならび) :-
        atomic_list_concat(_整数ならび,' * ',_積算対象文字列),
        atom_to_term(_積算対象文字列,_積算式,_),
        _数値の積算値 is _積算式,
        writef('%t = %t\n',[_積算対象文字列,_数値の積算値]).