このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1294061094/21
#  [1] 授業単元:C言語プログラミング 
#  [2] 問題文(含コード&リンク): http://ime.nu/www.dotup.org/uploda/www.dotup.org1340661.txt 
#  
#  2.問題1を利用して、キーボードから実数aと正の整数nを入力しa^1 + a^2 + a^3 +... + a^nを作成せよ。

'問題1を利用して、キーボードから実数aと正の整数nを入力しa^1 + a^2 + a^3 +... + a^nを作成せよ。'(_解) :-
        キーボードから実数aと正の整数nを入力し(_実数a,_整数n),
        'a^1 + a^2 + a^3 +... + a^nを作成せよ。'(1,_正の整数n,_実数a,0,_解).

'a^1 + a^2 + a^3 +... + a^nを作成せよ。'(_正の整数n,_整数n,_実数a,X) :-
        power(_実数a,_正の整数n,X),!.
'a^1 + a^2 + a^3 +... + a^nを作成せよ。'(M,_正の整数n,_実数a,_解1) :-
        power(_実数a,M,Y),
        M2 is M + 1,
        'a^1 + a^2 + a^3 +... + a^nを作成せよ。'(M2,_正の整数n,_実数a,_解2),
        _解1 is _解2 + Y.

キーボードから実数aと正の整数nを入力し(_実数a,_正の整数n) :-
        キーボードから実数aを入力(_実数a),
        キーボードから正の整数nを入力(_正の整数n).

キーボードから実数aを入力(_実数a) :-
        write('a^1 + a^2 + a^3 +... + a^nの計算をします。実数aを入力してください : '),
        get_line(Line),
        実数a入力診断(Line,_実数a),!.
キーボードから実数aを入力(_実数a) :- キーボードから実数aを入力(_実数a).

実数a入力診断(Line,_実数a) :-
        atom_to_term(Line,_実数a,_),
        float(_実数a),!.
実数a入力診断(Line,_) :-
        write_formatted('入力された %t から実数が得られません。再入力をお願いします。\n',[Line]),
        fail.

キーボードから正の整数nを入力(_正の整数n) :-
        write('正の整数nを入力してください : '),
        get_line(Line),
        整数n入力診断(Line,_正の整数n),!.
キーボードから正の整数nを入力(_正の整数n) :- キーボードから正の整数nを入力(_正の整数n).

整数n入力診断(Line,_正の整数n) :-
        atom_to_term(Line,_正の整数n,_),
        integer(_正の整数n),
        _正の整数n > 0,!.
整数n入力診断(Line,_) :-
        write_formatted('入力された %t から正の整数が得られません。再入力をお願いします。\n',[Line]),
        fail.