-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 ------------