このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1288531658/255
#  [1]プログラミング演習 
#  [2]真分数を入力して、小数点以下20桁までの小数を表示するプログラムを作成してください。 
#  ただし、分子と分母をそれぞれ引数として、小数表示を実現する処理は浮動小数点演算を使用しない関数 
#  void to_float(int a, int b)として実現すること。 
#  実行例 
#  分子:1 
#  分母:7 
#  0.14285714285714285714 
#  [3] 
#   [3.1] windows  
#   [3.2] visualstdio2010 
#   [3.3] C言語 
#  [4] 2010/11/7  
#  [5] 関数までです。循環小数を使用しない方法が望ましいと言われました。 
#  ただ、循環小数でもできるならそれでいいとのことです。お願いします。 
#   

真分数を入力して、小数点以下20桁までの小数を表示する(_分子,_分母,_小数表示) :-
        length(_小数点以下ならび,20),
        分数小数表示(_分子,_分母,_小数点以下ならび),
        concat_atom(['0.'|_小数点以下ならび],_小数表示).

分数小数表示(_,_,[]) :- !.
分数小数表示(0,_分母,R) :-
        all(R,''),!.
分数小数表示(_分子,_分母,[0|_残りならび]) :-
        _分子 < _分母,
        _分子の二 is _分子 * 10,
        分数小数表示(_分子の二,_分母,_残りならび).
分数小数表示(_分子,_分母,[_除数|_残りならび]) :-
        _分子 >= _分母,
        _除数 is _分子 // _分母,
        _剰余 is _分子 mod _分母,
        分数小数表示(_剰余,_分母,_残りならび).