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 行へ飛んでいきました。