このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1342966104/31
#  [1] 授業単元:C言語 
#  [2] 問題文(含コード&リンク): 
#   
#  以下の問題文の ^ はべき乗をあらわす記号とする。 
#   
#  1.二次方程式 "ax^2+bx+c=0" のxの解を"解の公式"を使って求め、表示しなさい。 
#  a,b,cは乱数によって決定されるdouble型の変数とする。 
#  a,b,cは "a≠0 , b^2-4ac>=0" を満たすものとする。 
#  解の公式は {-b±√(b^2-4ac)}/(2a) を使うこと。 
#   
#  2.解の公式を使って解く上記方法には問題点があります。 
#  上記問題点とは、"a=0 , b^2-4ac<0"の時という意図ではありません、 
#  あくまで"a≠0 , b^2-4ac>=0"である前提での問題点です。 
#  その問題点がなんであるかを答え、 
#  その問題点を解決するプログラムを作成しなさい。 
#   
#  

'二次方程式 "ax^2+bx+c=0" のxの解を"解の公式"を使って求め、表示しなさい。a,b,cは乱数によって決定されるdouble型の変数とする。a,b,cは "a≠0 , b^2-4ac>=0" を満たすものとする。解の公式は {-b±√(b^2-4ac)}/(2a) を使うこと。' :-
        'a,b,cは乱数によって決定される'(_a,_b,_c),
        'a,b,cは "a≠0 , b^2-4ac>=0" を満たすものとする。'(_a,_b,_c),
        '解の公式は {-b±√(b^2-4ac)}/(2a) を使うこと。'(_a,_b,_c,_解),
        表示する(_a,_b,_c,_解).

'a,b,cは乱数によって決定される'(_a,_b,_c) :-
        'aは0を避ける'(_a),
        _b is random(12) - 6,
        _c is random(12) - 6.

'aは0を避ける'(_a) :-
        _a is random(12) - 6,
        \+(_a = 0),!.
'aは0を避ける'(_a) :-
        'aは0を避ける'(_a).

'a,b,cは "a≠0 , b^2-4ac>=0" を満たすものとする。'(_a,_b,_c) :-
        \+(_a = 0),
        _b ^ 2 - 4 * _a * _c >= 0.0.

'解の公式は {-b±√(b^2-4ac)}/(2a) を使うこと。'(_a,_b,_c,_解) :-
        _解 is (-1 * _b + sqrt(_b ^2 - 4 * _a * _c)) / (2 * _a).
'解の公式は {-b±√(b^2-4ac)}/(2a) を使うこと。'(_a,_b,_c,_解) :-
        _解 is (-1 * _b - sqrt(_b ^2 - 4 * _a * _c)) / (2 * _a).

表示する(_a,_b,_c,_解) :-
        writef('%tx^2+%tx+%t=0 の解は x = %t\n',[_a,_b,_c,_解]),
        fail.
表示する(_,_,_,_).