Другие языки программирования и технологии

Решение квадратного уравнения через паскаль.

Помогите решить проблему. В решении обязательно должны рассматриваться варианты, когда a,b,c равны 0
Вот так почти правильно:
 uses crt;  
var a, b, c, d, e, x1, x2: real;
begin
textbackground(white);
textcolor(black);
clrscr();
write('a b c: ');
readln(a, b, c);
if a = 0 then
if b = 0 then
if c = 0 then writeln('x ∈ ℝ')
else writeln('x ∈ ∅')
else writeln('x = ', -c/b)
else
begin
d := b * b - 4 * a * c;
if d < 0 then writeln('x ∈ ∅')
else
if d = 0 then writeln('x = ', -0.5*b/a)
else
begin
e := sqrt(d);
x1 := 0.5*(-b - e)/a;
x2 := 0.5*(-b + e)/a;
if x1 > x2 then
begin
e := x1;
x1 := x2;
x2 := e
end;
writeln('x₁ = ', x1, ', x₂ = ', x2)
end
end
end.

К сожалению, есть один неприятный случай, когда |4ac/b²|<<1. Вот специально для этого случая всю программу придётся переписывать, чтобы она работала корректна - тут требуется переходная асимптотика, что выходит далеко за рамки средней школы. Напиши́те мне если Вам этот случай обязательно необходимо учитывать!
Deфицитniy Krasav4Ик
Deфицитniy Krasav4Ик
66 572
Лучший ответ
Ты сам свой скрин с какой лупой рассматриваешь? На будущее: здесь мало кто получает адекватный ответ, когда нет кода в текстовом отформатированном виде.
Мубарак Сарсен
Мубарак Сарсен
66 924
uses crt;
var
a,b,c,d,x1,x2,rx,ix: real;
begin
{Вводим значения a, b и c}
clrscr;
write('Wwedite A: ');
readln(a);
write('Wwedite B: ');
readln(b);
write('Wwedite C: ');
readln(c);
if
{Вычисляем дискриминант}
d:= b*b - 4*a*c;
{Если дискриминант больше 0, то вычисляем корни и выводим на экран}
if d >= 0 then
begin
x1:= (-b + sqrt(d))/(2*a);
x2:= (-b - sqrt(d))/(2*a);
writeln('x1 = ',x1:4:2);
writeln('x2 = ',x2:4:2);
end;

{Если дискриминант меньше 0, то выводим сообщение}
if d < 0 then
begin
writeln('корни комплексные');
rx:= -b/(2*a);
ix:=sqrt(-d)/(2*a);
writeln('x1 = ',rx:4:2,' + ',ix:4:2,' i');
writeln('x1 = ',rx:4:2,' - ',ix:4:2,' i');
end;
readln;
end.
Миша Ченцов
Миша Ченцов
95 955
Миша Ченцов if (a=0) and (b=0) and (c=0) then writln('х-любое число');
вставь после ввода С.
Ни черта не видно на фотке, но судя по ошибке должно быть что-то типа такого

if (a=0) and (b=0) and (c=0) then ...
Vuqar Sadixov
Vuqar Sadixov
59 627
 ##
var a := ReadString.Split(Arr('x^2+','x+','=0',', ',string('x')), System.StringSplitOptions.RemoveEmptyEntries).Select(x->real.Parse(x)).ToArray;
var d := (a[1]**2 - 4*a[0]*a[2]);
print(if (d > 0) then 'Ответ: ' + ((-a[1]+sqrt(d))/(2*a[0]))+' '+((-a[1]-sqrt(d))/(2*a[0])) else if (d = 0) then ' '+(-a[1]/(2*a[0])) else 'Корней нет');