-b sqrt(-diskr)
X1.вещественн. = ---- X1.мнимое = -------------;
2*a 2*a
-b -sqrt(-diskr)
X2.вещественн. = ---- X2.мнимое = -------------;
2*a 2*a
Текст программы (Турбо-Паскаль)
Program Uravn3;
Var a,b,c,diskr,x1,x2,x_re,x_im: real; yesno: Boolean;
begin
write('Введите a,b,c (3 числа, разделяя пробелом)');
readln(a,b,c);
diskr := b*b - 4*a*c;
if diskr > 0 then
begin
x1 := (-b + sqrt(diskr))/(2*a);
x2 := (-b - sqrt(diskr))/(2*a);
writeln('X1 = ',x1:0:3,' X2 = ',x2:0:3);
end else
if diskr = 0 then
begin
x1 := (-b)/(2*a);
writeln('Корни кратные, X = ',x1:0:3);
end else
begin
write('Действительных корней нет. Нужны комплексные? (0/1)-->');
readln(Byte(yesno));
if yesno then
begin
x_re := -b/(2*a);
x_im := sqrt(-diskr)/(2*a);
writeln('X1 = ',x_re:0:3,'+ I*',x_im:0:3);
writeln('X2 = ',x_re:0:3,'- I*',x_im:0:3);
end;
end; readln;
end.
--------
Оказывается, преобразование типов применимо и в таком виде:
Byte(yesno) и это играет роль переменной типа byte, в которую
вводится 0 или 1. А переменная yesno в итоге хранит false или true!
---------
Результаты работы программы:
---------
Turbo Pascal Version 7.0 Copyright (c) 1983,92 Borland
Введите a,b,c (3 числа, разделяя пробелом)1 8 2
X1 = -0.258 X2 = -7.742
Введите a,b,c (3 числа, разделяя пробелом)1 8 2
X1 = -0.258 X2 = -7.742
Введите a,b,c (3 числа, разделяя пробелом)8 1 2
Действительных корней нет. Нужны комплексные? (0/1)-->0
Введите a,b,c (3 числа, разделяя пробелом)8 1 2
Действительных корней нет. Нужны комплексные? (0/1)-->1
X1 = -0.063+ I*0.496
X2 = -0.063- I*0.496
------------