このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/118
#  [1] 授業単元: C言語 
#  [2] 問題文(含コード&リンク): キーボードから底面の半径と高さを入力したときの円柱の体積を計算するプログラムを作成しなさい 
#  

キーボードから底面の半径と高さを入力したときの円柱の体積を計算する(_円柱の体積) :-
        キーボードから底面の半径と高さを入力したときの円柱の体積を計算する(_,_,_円柱の体積).

キーボードから底面の半径と高さを入力したときの円柱の体積を計算する(_底面の半径,_高さ,_円柱の体積) :-
        キーボードから底面の半径と高さを入力したときの(_底面の半径,_高さ),
        円柱の体積を計算する(_底面の半径,_高さ,_円柱の体積).

キーボードから底面の半径と高さを入力したときの(_底面の半径,_高さ) :-
        底面の半径の入力(_底面の半径),
        高さの入力(_高さ).

底面の半径の入力(_底面の半径) :-
        write('底面の半径を入力してください : '),
        get_line(Line),
        '診断: 底面の半径の入力(Line,_底面の半径),!.
底面の半径の入力(_底面の半径) :-
        底面の半径の入力(_底面の半径).

'診断: 底面の半径の入力'(Line,_底面の半径) :-
        atom_to_term(Line,_底面の半径,_),
        number(_底面の半径),
        _底面の半径 >= 0.0,!.
'診断: 底面の半径の入力'(Line,_底面の半径) :-
        writef('入力された %t からは底面の半径が得られません。再入力をお願いします。\n',[Line]),
        fail.

高さの入力(_高さ) :-
        write('高さを入力してください : '),
        get_line(Line),
        '診断: 高さの入力(Line,_高さ),!.
高さの入力(_高さ) :-
        高さの入力(_高さ).

'診断: 高さの入力'(Line,_高さ) :-
        atom_to_term(Line,_高さ,_),
        number(_高さ),
        _高さ >= 0.0,!.
'診断: 高さの入力'(Line,_高さ) :-
        writef('入力された %t からは高さが得られません。再入力をお願いします。\n',[Line]),
        fail.

円柱の体積を計算する(_底面の半径,_高さ,_円柱の体積) :-
        _円柱の体積 is _底面の半径 * _底面の半径 * pi * _高さ.