このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1260532772/606
#  プログラミングの問題なんですが、if文と繰り返し(for,whileのいずれか)を利用して次の問題を作成します。 
#   
#  米ドル紙幣としては次のような紙幣とコインがある。 
#  100ドル、50ドル、20ドル、10ドル、5ドル、2ドル、1ドル 
#  50セント、25セント、10セント、5セント、1セント 
#   
#  問題は、キーボードから日本円を入力し、まずドルに変換した後ドルを最適な紙幣とコインに振り分けるプログラムを作成しなさい。但し1ドルを92.69円として換算しなさい。そして、日本円が0円の時にプログラムを終了する。 
#   
#  例 
#  ¥195,865 
#  2,112,89$ 
#   
#  100$…21枚 
#  50$ 
#  20$ 
#  10$…1枚 
#  5$ 
#  2$…1枚 
#  1$ 
#  50¢…1枚 
#  25¢…1枚 
#  10¢…1枚 
#  5¢ 
#  1¢…4枚 
#   
#  このような問題なんですがプログラムとして最適なものが分かる方は是非教えてください。 
# 
# 
現在の対ドル為替レート(92.69).

日本円をドルに変換する(_日本円,_ドル,_セント) :-
    現在の対ドル為替レート(_現在の為替レート),
    _ドル is truncate(float_integer_part(_日本円 / _現在の為替レート)),
    _セント is truncate(float_fractional_part(_日本円 / _現在の為替レート) * 100).

日本円をドルとセントに変換して金種を計算する(_日本円,_ドルの金種,_セントの金種) :-
    日本円をドルに変換する(_日本円,_ドル,_セント),
  ドルの金種計算(_ドル,[100,50,20,10,5,2,1],_ドルの金種),
  セントの金種計算(_セント,[50,25,10,5,1],_セントの金種).

ドルの金種計算(_,[],[]) :-
ドルの金種計算(D,[_金種|R1],[[_金種,_枚数]|R2]) :-
    _枚数 is truncate(D // _金種),
    D2 is truncate(D mod _金種),
    ドルの金種計算(D2,R1,R2).

セントの金種計算(_,[],[]) :-
セントの金種計算(C,[_金種|R1],[[_金種,_枚数]|R2]) :-
    _枚数 is truncate(C // _金種),
    C2 is truncate(C mod _金種),
    セントの金種計算(C2,R1,R2).


現在の為替レート(92.384).
yes.
?- 日本円をドルに変換する(123840,_ドル,_セント).

_ドル = 1340,
_セント = 49.
yes.
?- 
yes.
?-