このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/150
#  [1] 授業単元:プログラミング  
#  [2] 問題文:  
#  y=1+x+x^2+x^3+...+x^N ただし |x|<1 
#   
#  を計算する関数 float func1(float x, int N) を定義してその動作を確認するプログラムkadai3-1.cを書きなさい。 
#  ただしNとxはキーボードから次で入力するものとする。 
#  scanf("%f %d", &x, &N); 
#  答えは以下で出力されるものとする。printf("answer = %f\n", answer); 
#    

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

'y=1+x+x^2+x^3+...+x^N ただし |x|<1 '(M,N,_x,_y,_y) :-
        M > N,!.
'y=1+x+x^2+x^3+...+x^N ただし |x|<1 '(M,N,_x,_y_1,_y) :-
        _y_2 is _y_1 + _x ^ M,
        M_2 is M + 1,
        'y=1+x+x^2+x^3+...+x^N ただし |x|<1 '(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.

'答えは以下で出力されるものとする。printf("answer = %f\n",[_y])'(_y) :-
        writef('answer = %t\n',[_y]).