BASICプログラミング | JIS Full BASIC |
◎ 二次方程式の解
二次方程式、y=ax2 + bx + c (a≠0)の解を求める。
判別式 D = b2 - 4ac D = 0 重解 D > 0 解あり D < 0 解なし 方程式 ax2 + bx + c = 0 (a≠0)
の解の公式x = (-b + SQR(b ^ 2 - 4 * a * c)) / (2 * a)
= (-b + SQR(D))/(2 * a)
x = (-b - SQR(b ^ 2 - 4 * a * c)) / (2 * a)
= (-b - SQR(D))/(2 * a)
SQR(n)は、平方根 √n のこと。
まず、判別式で解を判別する。D>0(解あり)の場合、解の公式を使って、x1=XXとx2=XX の2つの解を求める。D=0(重解)の場合、解は x1=x2=XX であるから解の公式のどちらかを使って求める。D<0(解なし)の場合は「解なし」とメッセージを表示する。
問題44 次のプログラムは、二次方程式、y=ax2 + bx + c (a≠0)のa,b,cを入力して解を繰り返し求めるものである。ただし、a=0のときにプログラムを終了する。空欄を埋めて完成させなさい。 [MON44.BAS]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21PRINT "二次方程式ax^2+bx+c(a≠0)の解"
DO
INPUT PROMPT "a(0で終了)=":a
IF @ THEN
EXIT DO
END IF
INPUT PROMPT "b=":b
INPUT PROMPT "c=":c
LET d= A
IF B THEN
PRINT "解なし"
ELSEIF C THEN
LET x1=-b/(2*a)
PRINT "X1=X2=";x1
ELSE
LET x1=(-b+SQR(d))/(2*a)
LET x2=(-b-SQR(d))/(2*a)
PRINT "X1=";x1,"X2=";x2
END IF
LOOP
END
[実行結果] 赤色部分が入力データである。
二次方程式ax^2+bx+c(a≠0)の解
a(0で終了)=1
b=1
c=1
解なし
a(0で終了)=1
b=-1
c=-2
X1= 2 X2=-1
a(0で終了)=1
b=-2
c=1
X1=X2= 1
a(0で終了)=0
BASICプログラミング | JIS Full BASIC |