Var a, b, c, d, x1, x2, x3, x4, y1, y2: double; begin write('введите через пробел коэффициенты a,b,c: '); readln(a, b, c); if b = 0 then begin if c > 0 then writeln('нет действительных корней') else if c = 0 then writeln('единственный корень x=0') else begin y1 : = -c / a; if y1 > 0 then begin y1 : = sqrt(y1); x1 : = -sqrt(y1); x2 : = -x1; writeln('два действительных корня: ', x1, ', ', x2) end else writeln('нет действительных корней') end end else if c = 0 then if b > 0 then writeln('единственный корень x=0') else begin y1 : = -b / a; if y1 > 0 then begin x1 : = sqrt(-b / a); x2 : = -x1; writeln('три действительных корня: 0, ', x1, ', ', x2) end else writeln('единственный корень x=0') end else begin d : = sqr(b) - 4 * a * c; if d < 0 then writeln('нет действительных корней') else if d = 0 then begin y1 : = -b / (2 * a); if y1 < 0 then writeln('нет действительных корней') else begin x1 : = sqrt(y1); x2 : = -x1; writeln('два действительных корня: ', x1, ', ', x2) end end else begin d : = sqrt(d); y1 : = (-b - d) / (2 * a); y2 : = (-b + d) / (2 * a); if y1 < 0 then if y2 < 0 then writeln('нет действительных корней') else begin x1 : = -sqrt(y2); x2 : = -x1; writeln('два действительных корня: ', x1, ', ', x2) end else if y2 < 0 then begin x1 : = -sqrt(y1); x2 : = -x1; writeln('два действительных корня: ', x1, ', ', x2) end else begin x1 : = -sqrt(y1); x2 : = -x1; x3 : = -sqrt(y2); x4 : = -x3; if x1 = x2 then writeln('три действительных корня: ', x1, ', ', x3, ', ', x4) else if x3 = x4 then writeln('три действительных корня: ', x1, ', ', x2, ', ', x3) else writeln('четыре действительных корня: ', x1, ', ', x2, ', ', x3, ', ', x4) end end end end. тестовое решение: введите через пробел коэффициенты a,b,c: 1 -25 144 четыре действительных корня: -3, 3, -4, 4 введите через пробел коэффициенты a,b,c: -1 -4 5 два действительных корня: -1, 1
Спасибо
Популярные вопросы