Мне нужно закодировать программу в паскале, которая, учитывая три коэффициента полинома (ax² + bx + c), выводит свои корни.Получение комплексных корней полинома второй степени в pascal
Вот что я прямо сейчас:
program poly;
type
polynomial = record
a, b, c : real;
end;
procedure readPolynomial (var p : polynomial);
begin
writeln ('Input 1st coefficient: ');
readln (p.a);
writeln ('Input 2nd coefficient: ');
readln (p.b);
writeln ('Input 3rd coefficient: ');
readln (p.c);
end;
function square (x : real) : real;
begin
square := x * x;
end;
procedure roots (p : polynomial; var rP, rN : real);
begin
rP := (-p.b + (sqrt((square(p.b)) - (4 * p.a * p.c))))/(2 * p.a);
rN := (-p.b - (sqrt((square(p.b)) - (4 * p.a * p.c))))/(2 * p.a);
writeln('The roots are: ', rP:0:3, ' y ' ,rN:0:3);
end;
var
myPolynomial : polynomial;
r1, r2 : real;
begin
writeln ('Enter the coefficients: ');
readPolynomial (myPolynomial);
roots (myPolynomial, r1, r2);
end.
Он отлично работает для реальных корней, но я не знаю, как заставить его работать с комплексными числами.
Вы имеете в виду комплексные коэффициенты a, b, c? Или вы хотите обработать случай с реальными коэффициентами и отрицательным дискриминантом? В этом случае смотрите здесь: https://en.wikipedia.org/wiki/Quadratic_equation#Discriminant – gammatester
Люди будут часто задавать уточняющие вопросы вскоре после того, как вопрос будет опубликован, поэтому неплохо остаться на сайте на некоторое время и посмотреть для этих вопросов. В противном случае ваш вопрос может быть опущен и/или закрыт. –