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

Решение квадратного уравнения через паскаль.
Помогите решить проблему. В решении обязательно должны рассматриваться варианты, когда a,b,c равны 0

Вот так почти правильно:
К сожалению, есть один неприятный случай, когда |4ac/b²|<<1. Вот специально для этого случая всю программу придётся переписывать, чтобы она работала корректна - тут требуется переходная асимптотика, что выходит далеко за рамки средней школы. Напиши́те мне если Вам этот случай обязательно необходимо учитывать!
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. Вот специально для этого случая всю программу придётся переписывать, чтобы она работала корректна - тут требуется переходная асимптотика, что выходит далеко за рамки средней школы. Напиши́те мне если Вам этот случай обязательно необходимо учитывать!
Ты сам свой скрин с какой лупой рассматриваешь? На будущее: здесь мало кто получает адекватный ответ, когда нет кода в текстовом отформатированном виде.
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.
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.
Ни черта не видно на фотке, но судя по ошибке должно быть что-то типа такого
if (a=0) and (b=0) and (c=0) then ...
if (a=0) and (b=0) and (c=0) then ...
##
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 'Корней нет');


Похожие вопросы
- Програмисты, помогите! В Турбо Паскаль составить программу для решения квадратного уравнения(ax^2+bx=c)
- Как будет выглядеть программа решения квадратного уравнения ax^2 + bx + c = 0 (Паскаль)???
- Решение Квадратного уравнения в VB
- Помогите Написать программу (на Pascal) для решения квадратного уравнения.
- Программа для решения квадратного уравнения в Си
- Напишите программу на языке программирования Паскаль, . которая вычисляет дискриминант квадратного уравнения
- Дайте мне любое квадратное уравнение
- Помогите пожалуйста составить программу в Qbasic обычного квадратного уравнения...очень нужно...
- Нужна помощь! Необходимо создать программу на С++, которая решает квадратное уравнение. Выдает ошибку после }
- Квадратное уравнение в с++
вставь после ввода С.