2次方程式を解く(完全なプログラム)


実は,先ほどのサンプルプログラム 1 は完全なプログラムではありません。なぜならば,a の値が 0 である時は,プログラムが正しく動作しないからです。例えば,サンプルプログラム 1 において,a = 0, b = 1, c = 2 と入力すると 0 による除算が行われましたというエラーメッセージを出して,止まってしまいます。これは,行番号 50 と 60 において,2*a での除算を,実行しているからです。これを防ぐには a が 0 に等しい時と等しくない時とで,場合分けが必要に なります。a = 0 である時には,与えられた多項式は 1次多項式 bx+c ですので,根を -c/b とすれば良いように思えますが,b が 0 である場合も考慮しなければなりません。結局,プログラムは次のようになります。

これを BASIC のプログラムで書くと,次のようになります。

サンプルプログラム2

プログラムの解説をします。

プログラムを実行してみましょう。まず,a = 0, b = 1, c = 2 と入力してみます。

a = 0 なので,プログラムは 40 行から 90 行へ行き,100行で答えが表示されました。もう一度実行して,今度は,a = 0, b = 0, c = 1 と入力してみましょう。

今度は,a = 0, b = 0 なので,40 行から 90 行へ飛び,それからさらに 120 行,130 行へ飛んでいきました。