Пример 1.5.
Решить квадратное уравнение
ax2+ bx + c = 0.
Система тестов
Номер теста |
Проверяемый случай |
Коэффициенты |
Результаты |
a |
b |
c |
1 |
d >0 |
1 |
1 |
-2 |
x1 = 1, x2 = - 2 |
2 |
d=0 |
1 |
2 |
1 |
Корни равны: x1 = - 1, x2 = - 1 |
3 |
d < 0 |
2 |
1 |
2 |
Действительных корней нет |
4 |
a=0, b=0, c=0 |
0 |
0 |
0 |
Все коэффициенты равны нулю. х любое число. |
5 |
a=0, b=0, c<>0 |
0 |
0 |
2 |
Неправильное уравнение |
6 |
a=0, b<>0 |
0 |
2 |
1 |
Линейное уравнение. Один корень: x = - 0,5 |
7 |
a <> 0, b <> 0, с = 0 |
2 |
1 |
0 |
x1 = 0, x2 = - 0,5 |
Демонстрация
Школьный АЯ (упрощенный алгоритм)
алг Квур (арг вещ а, b, c, рез вещ x1, x2, рез лит t)
дано a <> 0
нач вещ d
d := b**2-4*a*c | d - дискриминант квадратного уравнения
если d<0
то t := "Действительных корней нет"
иначе если d=0
то t := "Корни равны"; x1 := -b/(2*a); x2 := x1
иначе t := "Два корня"
x1 := (-b + sqrt(d)) / (2*a)
x2 := (-b - sqrt(d)) / (2*a)
все
все
кон
Turbo Pascal
Program QuadraticEquation;
Uses Crt; { подключение библиотеки Crt }
Var a, b, c : Real; {a, b, c - коэффициенты уравнения}
Discr : Real;
x1, x2 : Real; {x1, x2 - корни }
Test, NTest : Integer; {Ntest - количество тестов }
BEGIN
ClrScr;
Write('Введите количество тестов : ');
ReadLn(NTest);
For Test := 1 to NTest do {цикл по всем тестам задачи }
begin
Write('Тест ', Test, '. Введите коэффициенты a, b, c : ');
ReadLn(a, b, c);
If (a=0) and (b=0) and (c=0)
then begin Write('Все коэффициенты равны нулю.');
WriteLn('x - любое число ')
end
else
If (a=0) and (b<>0)
then WriteLn('Линейное уравнение. Oдин корень: x =', (-c/b):6:2)
else
If (a=0) and (b=0) and (c<>0)
then WriteLn('Неправильное уравнение.')
else
begin
Discr := b*b - 4*a*c;
If Discr > 0
then begin
x1:=(-b + Sqrt(Discr)) / (2*a);
x2:=(-b - Sqrt(Discr)) / (2*a);
WriteLn('x1=' , x1:6:2 , '; x2=' , x2:6:2)
end
else
If Discr = 0
then begin
x1 := -b/(2*a);
WriteLn('Корни равны: x1=', x1:6:2, ' x2=', x1:6:2)
end
else WriteLn('Действительных корней нет.');
end;
WriteLn
end;
ReadLn
END.
QBasic
CLS
INPUT "Введите количество тестов : ", NTest
FOR Test = 1 TO NTest ' цикл по всем тестам задачи
PRINT "Тест" ; Test ; ". Введите коэффициенты a, b, c : " ;
INPUT a, b, c
IF (a = 0) AND (b = 0) AND (c = 0) THEN
PRINT "Все коэффициенты равны нулю. x - любое число"
ELSE
IF (a = 0) AND (b <> 0) THEN
PRINT "Линейное уравнение, корень один : x = "; -c / b
ELSE
IF (a = 0) AND (b = 0) AND (c <> 0) THEN
PRINT "Неправильное уравнение."
ELSE
Discr = b * b - 4 * a * c
IF Discr > 0 THEN
x1 = (-b + SQR(Discr)) / (2 * a)
x2 = (-b - SQR(Discr)) / (2 * a)
PRINT "x1 = "; x1; "; x2 = "; x2
ELSE
IF Discr = 0 THEN
x1 = - b / (2 * a)
PRINT "Корни равны: x1 = "; x1; "; x2 = "; x1
ELSE PRINT "Действительных корней нет."
END IF
END IF
END IF
END IF
END IF : PRINT
NEXT Test
END
Результаты работы QBasic-программы (фрагмент):
Тест 1 . Введите коэффициенты
a, b, c : ? 1, 1, –2 <Enter>
x1 = 1 ; x2 = – 2
Тест 2 . Введите коэффициенты a, b, c :
? 1, 2, 1 <Enter>
Корни равны: x1 = – 1 ; x2 = – 1
Тест 3 . Введите коэффициенты a, b, c :
? 2, 1, 2 <Enter>
Действительных корней нет. |