Миоко Таканава
Гений
(51590)
11 лет назад
Ошибок море.
После begin и перед else точка с занятой недопустима.
Недопустимо присвоение целочисленным переменным чисел с плавающей запятой, а извлечение квадратного корня возвращает действительное значение.
Неверно написаны формулы вычисления корней x1 и x2.
Если дискриминант меньше нуля, то всё равно будет выполняться извлечение корня из этого отрицательного значения, что вызовет runtime ошибку.
Исправленная программа:
program kvadratn;
var A,B,C,x1,x2,D:real;
begin
Writeln('Дано уравнение вида Ax^2+Bx+C=0');
Writeln('Задайте коэффициент A');
Readln(A);
Writeln('Задайте коэффициент B');
Readln(B);
Writeln('Задайте коэффициент C');
Readln(C);
D:=B*B-4*A*C;
Write('Дискриминант равен: ');
Writeln(D);
if D < 0 then writeln('Действительных корней нет')
else
begin
x1:=(-B+sqrt(D))/2/A;
x2:=(-B-sqrt(D))/2/A;
Writeln('Корни: ');
writeln(x1);
if D > 0 then Writeln(x2);
end;
end.
var A,B,C,x1,x2,D:integer;
begin;
Writeln('Дано уравнение вида Ax^2+Bx+C=0');
Writeln('Задайте коэффициент A');
Readln(A);
Writeln('Задайте коэффициент B');
Readln(B);
Writeln('Задайте коэффициент C');
Readln(C);
D:=B*B-4*A*C;
Write('Дискриминант равен: ');
Writeln(D);
x1:=((-B+sqrt(D))/2*A);
x2:=((-B-sqrt(D))/2*A);
Writeln('Корни: ');
if (D>=0) then writeln(x1); Writeln(x2);
else writeln('Корней нет');
end.
Написал вот такую программку которая должна вычислять корни квадратного уравнения.
Но при запуске её, выдаёт ошибку и пишет что ожидался оператор и подчёркивает строчку "else writeln('корней нет')
пожалуйста подскажите в чём проблема