このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/151
#  [1] 授業単元:プログラミング  
#  [2] 問題文:  
#  y=1+(1/x)+(1/x)^2+(1/x)^3+...+(1/x)^N 
#   
#  ただしNとxはキーボードから次で入力するものとする。 
#  scanf("%f %d", &x, &N); 
#  答えは以下で出力されるものとする。 
#  printf("answer = %f\n", answer); 
#   
#   

'y=1+(1/x)+(1/x)^2+(1/x)^3+...+(1/x)^N ただしNとxはキーボードから入力する。答えは以下で出力されるものとする。printf("answer = %f\n", answer);' :-
        'Nとxはキーボードから入力する'(N,_x),
        'y=1+(1/x)+(1/x)^2+(1/x)^3+...+(1/x)^N'(0,N,_x,0,_y),
        '答えは以下で出力されるものとする。writef("answer = %f\n",[_y])'(_y).

'y=1+(1/x)+(1/x)^2+(1/x)^3+...+(1/x)^N'(M,N,_x,_y,_y) :-
        M > N,!.
'y=1+(1/x)+(1/x)^2+(1/x)^3+...+(1/x)^N'(M,N,_x,_y_1,_y) :-
        _y_2 is _y_1 + (1 / _x) ^ M,
        M_2 is M + 1,
        'y=1+(1/x)+(1/x)^2+(1/x)^3+...+(1/x)^N'(M_2,N,_x,_y_2,_y).

'Nとxはキーボードから入力する'(N,_x) :-
        'Nの入力'(N),
        '_xの入力'(_x).

'Nの入力'(N) :-
        write('N : '),
        get_integer(N),!.
'Nの入力'(N) :-
        'Nの入力'(N).

'_xの入力'(_x) :-
        write('x (<1) : '),
        get_line(Line),
        '_xの入力診断'(Line,_x),!.
'_xの入力'(_x) :-
        '_xの入力'(_x).

'_xの入力診断'(Line,_x) :-
        atom_to_term(Line,_x,_),
        _x > 0.0,
        _x < 1.0,!.
'_xの入力診断'(Line,_x) :-
        writef('入力された %t からは1以下の適切な数が得られません。\n',[Line]),
        fail.