СС
Сергей Сироткин

Ожидался оператор PASCAL

program kvadratn;
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('корней нет')
пожалуйста подскажите в чём проблема

Сайгид
Сайгид

Ошибок море.
После 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.

Всеволод
Всеволод

во ...во так ...

if D=0 then writeln(x1)
else if D>0
begin
Writeln(x1) ;
Writeln(x2) ;
end
else writeln('Корней нет');

так правильнее будет ...зачем тебе при D=0 выводить оба значения (они ведь одинаковые)

Cutie
Cutie

if (D>=0) then
begin
writeln(x1); Writeln(x2);
end;
else writeln('Корней нет');

РЯ
Роман Яковлев

1000лет и один день не программировал на паскале!
Посмотри третью строку снизу: после тhen два writeln, это допускается? Попробуй сделать один writeln или если тебе очень надо, составной оператор.

Похожие вопросы
помогите с условным оператором в Pascal
Где ошибка? паскаль написал "Ожидался оператор"
Программа Pascal ошибка оператор and.
Язык Pascal. Оператор Readln;
pascal ABC (оператор case)
Pascal не работает программа ошибка: Ожидалось ;
Ошибка: ожидался оператор!
Оператор ВАРИАНТА! PASCAL! .
Pascal, Delphi. Оператор ветвления
Напишите программу в abc pascal с оператором while .