このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349527750/543
#  [1] c言語  
#  [2] 問題文:  
#  円柱の半径と高さを入力すると、表面積と体積を計算するプログラムを作成せよ。  
#  入力される数値として、浮動小数点数値に対応すること。  
#  作業内容と考察もお願いします。  
#  

'円柱の半径と高さを入力すると、表面積と体積を計算するプログラムを作成せよ。  
入力される数値として、浮動小数点数値に対応すること。' :-
        '円柱の半径と高さを入力すると、表面積と体積を計算するプログラムを作成せよ。入力される数値として、浮動小数点数値に対応すること。'(_表面積,_体積),
        writef('円柱の 表面積は %t, 体積は %t です。\n',[_表面積,_体積]).

'円柱の半径と高さを入力すると、表面積と体積を計算するプログラムを作成せよ。入力される数値として、浮動小数点数値に対応すること。'(_表面積,_体積) :-
        '円柱の半径と高さを入力すると(入力される数値として、浮動小数点数値に対応すること)'(_円柱の半径,_円柱の高さ),
        '表面積と体積を計算する'(_円柱の半径,_円柱の高さ,_表面積,_体積),

'円柱の半径と高さを入力すると(入力される数値として、浮動小数点数値に対応すること)'(_円柱の半径,_円柱の高さ) :-
        '円柱の半径の入力(入力される数値として、浮動小数点数値に対応すること)'(_円柱の半径),
        '円柱の高さの入力(入力される数値として、浮動小数点数値に対応すること)'(_円柱の高さ).

'円柱の半径の入力(入力される数値として、浮動小数点数値に対応すること)'(_円柱の半径) :-
        write('円柱の半径を入力してください : '),
        get_line(Line),
        円柱の半径入力診断(Line,_円柱の半径),!.

'円柱の半径(入力される数値として、浮動小数点数値に対応すること)入力診断'(Line,_円柱の半径) :-
        atom_to_term(Line,_円柱の半径,_),
        円柱の半径は整数か実数かのどちらか(_円柱の半径),
        _円柱の半径 > 0,!.
'円柱の半径(入力される数値として、浮動小数点数値に対応すること)入力診断'(Line,_円柱の半径) :-
        writef('入力された %t からは適切な円柱の半径としての値が取れません。\n再入力をお願いします。\n',[Line]),
        fail.

円柱の半径は整数か実数かのどちらか(_円柱の半径) :-
        integer(_円柱の半径).
円柱の半径は整数か実数かのどちらか(_円柱の半径) :-
        float(_円柱の半径).

'円柱の高さの入力(入力される数値として、浮動小数点数値に対応すること)'(_円柱の高さ) :-
        write('円柱の高さを入力してください : '),
        get_line(Line),
        '円柱の高さ(入力される数値として、浮動小数点数値に対応すること)入力診断'(Line,_円柱の高さ),!.

'円柱の高さ(入力される数値として、浮動小数点数値に対応すること)入力診断'(Line,_円柱の高さ) :-
        atom_to_term(Line,_円柱の高さ,_),
        円柱の高さは整数か実数かのどちらか(_円柱の高さ),
        _円柱の高さ > 0,!.
'円柱の高さ(入力される数値として、浮動小数点数値に対応すること)入力診断'(Line,_円柱の高さ) :-
        writef('入力された %t からは適切な円柱の高さとしての値が取れません。\n再入力をお願いします。\n',[Line]),
        fail.

円柱の高さは整数か実数かのどちらか(_円柱の高さ) :-
        integer(_円柱の高さ).
円柱の高さは整数か実数かのどちらか(_円柱の高さ) :-
        float(_円柱の高さ).

'表面積と体積を計算する'(_円柱の半径,_円柱の高さ,_表面積,_体積) :-
        表面積を計算する(_円柱の半径,_円柱の高さ,_表面積),
        体積を計算する(_円柱の半径,_円柱の高さ,_体積).

表面積を計算する(_円柱の半径,_円柱の高さ,_表面積) :-
        '表面積は上面、底面、側面の合計である'(_円柱の半径,_円柱の高さ,_表面積).

'表面積は上面、底面、側面の合計である'(_円柱の半径,_円柱の高さ,_表面積) :-
        _上面の面積 is _円柱の半径 * _円柱の半径 * pi,
        _底面の面積 is _円柱の半径 * _円柱の半径 * pi,
        側面の面積は円柱の円の周囲の長さに高さを乗じたもの(_円柱の半径,_円柱の高さ,_側面の面積),
        _表面積 is _上面の面積 + _底面の面積 + _側面の面積.

側面の面積は円柱の円の周囲の長さに高さを乗じたもの(_円柱の半径,_円柱の高さ,_側面の面積) :-
        _円柱の円の周囲の長さ is _円柱の半径 * 2 * pi,
        _側面の面積 is _円柱の周囲の長さ * _円柱の高さ.

体積を計算する(_円柱の半径,_円柱の高さ,_体積) :-
        円柱の体積は上面の面積に高さを乗じたもの(_円柱の半径,_円柱の高さ,_体積).

円柱の体積は上面の面積に高さを乗じたもの(_円柱の半径,_円柱の高さ,_体積) :-
        _上面の面積 is _円柱の半径 * _円柱の半径 * pi,
        _体積 is _上面の面積 * _円柱の高さ.