Помогите найти ошибку ( в паскале выдает false) - это программа по решению квадратного...

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

Помогите найти ошибку ( в паскале выдает false) - это программа по решению квадратного уравнения
Program Math;
var a,b,c,x,x1,x2,D:real;
begin
readln(a,b,c);
if a=0
then if b=0
then if c=0 then writeln('x-любое число') else writeln('корней нет')
else writeln ('x=',x = -c/b)
else if b=0 then if c=0 then writeln(x=0)else if (-c/a<0) then writeln ('корней нет')else writeln(x=sqrt(-c/a)) else if c=0 then writeln (x1=0, x2=-b/a) else D:= b*b-4*a*c ; if (D<0) then writeln ('корней нет')<br> else if (D=0) then writeln (x=-b/(2*a)) else writeln (x1=(-b+sqrt(D))/2*a, x2=(-b-sqrt(D))/ 2*a)
end.


Информатика (132 баллов) | 66 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

{предлагаю немного другой алгоритм решения}
Program Math;
var
x1,x2,d,e,f, a, b, c: real;
begin
writeln('Решение квадратного уравнения(ax^2+bx+c=0).');
write('Введите a: ');
readln(a);
write('Введите b: ');
readln(b);
write('Введите c: ');
readln(c);
d:=sqr(b)-4*a*c;
writeln('вы ввели:');
writeln('a=',a:6:2);
writeln('b=' ,b:6:2);
writeln('c=',c:6:2);
writeln(' Дискриминант: D=b*b-4*a*c=',d:6:2);
if (d>0)
then begin
e:= (-b/(2*a));
f:= (sqrt(d)/(2*a));
writeln('D>= 0, значит корни действительные: ');
writeln('x1= ',(e-f):6:2);
writeln('x2= ',(e+f):6:2);
end;
if (d=0) then writeln('D=0, значит уравнение имеет 1 корень: x1= ',-b/2*a:6:2);
if (d<0) then writeln(' D<0, корней нет ');<br>end.

(149k баллов)
0 голосов

Ответ в прикрепленном файле


image
(1.6k баллов)
0

спасибо, но нам еще нужны варианты когда возможно, что а=0 или б=0 и(или) с=0

0

Извиняюсь, не до конца прочитала задание, ответ ниже верный)