このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1307166756/851
#  [1] 情報処理演習 
#  [2]  問題:二次方程式 ax^2+bx+c=0 の解を解の公式を使って求めるプログラムを作成する.プログラムは以下の条件をみたすこと. 
#   
#  ・正しく実行できるプログラムである. 
#  ・scanfを用いて整数a,b,cを入力できること. 
#  ・ifを用いること. 
#  ・判別式を使って,重解,異なる2実数解,虚数解をもつ場合に分けて解を求めること. 
#  ・解は実数で求めること 
#  

'二次方程式 ax^2+bx+c=0 の解を解の公式を使って求めるプログラムを作成する.プログラムは以下の条件をみたすこと. ・正しく実行できるプログラムである. ・scanfを用いて整数a,b,cを入力できること. ・ifを用いること. ・判別式を使って,重解,異なる2実数解,虚数解をもつ場合に分けて解を求めること. ・解は実数で求めること'(_a,_b,_c,_x)  :-
        '二次方程式 ax^2+bx+c=0 の解を解の公式を使って求める'(_a,_b,_c,_x).

'二次方程式 ax^2+bx+c=0 の解を解の公式を使って求める'(_a,_b,_c,_x) :-
        判別式(_a,_b,_c,_判別,_判別値),
        解を解の公式を使って求める(_判別,_判別値,_a,_b,_c,_x).

解を解の公式を使って求める(重解,_判別値,_a,_b,_c,_x) :-
        _x is ((-1 * _b) + sqrt(_判別値)) / (2 * _a),!.
解を解の公式を使って求める(虚数解,_判別値,_a,_b,_c,解は存在しません) :- !.
解を解の公式を使って求める(_異なる2実数解,_判別値,_a,_b,_c,_x) :-
        _x is ((-1 * _b) + sqrt(_判別値)) / (2 * _a).
解を解の公式を使って求める(_異なる2実数解,_判別値,_a,_b,_c,_x) :-
        _x is ((-1 * _b) - sqrt(_判別値)) / (2 * _a).

判別式(_a,_b,_c,_判別) :-
        _値 is _b^2 - 4 * _a * _c,
        判別式(_値,_判別).

判別式(0.0,重解).
判別式(V,_虚数解) :-
        V < 0.0,!.
判別式(V,_異なる2実数解) :-
        V > 0.0,!.