Подскажите пожалуйста, где в програме вычисления корней квадратного уравнения допущена...

0 голосов
32 просмотров

Подскажите пожалуйста, где в програме вычисления корней квадратного уравнения допущена ошибка. Написана на паскале.

Program Dis;

var
x1, a, b, c, x2, d := real;
begin
wrireln('введите a');
readln(a);
wrireln('введите b');
readln(b);
wrireln('введите c');
readln(c);
d :=sqr(b)-(4*a*c);
writeln('D=', d);
if d>0
then
x1 :=(-1*b-sqrt(d))/(2*a);
x2 :=(-1*b+sqrt(d))/(2*a);
writeln('x1=', x1);
writeln('x2=', x2)
else
begin
if d<0 then<br> writeln('х не существует')
else
begin
x1 :=(-1*b+sqrt(d))/(2*a);
writeln('x1=', x1);
end

end


end.


Информатика (58 баллов) | 32 просмотров
Дан 1 ответ
0 голосов

1. Если D>0, то квадратное уравнение имеет 2 корня. После вычисления X1 нужно добавить X2:=(-1*b-sqrt(d))/(2*a); и в начале описать переменную X2 : real;
2. По хорошему нужно проверять, не равен ли коэффициент a нулю. Если а=0, то при вычислении Х1 и Х2 получится деление на ноль. Поэтому Х1 и Х2 нужно вычислять только если а не равно нулю (поставить условие if a<>0 then ...). В противном случае: else X1:=-c/b.

(124 баллов)