Ошибка синтаксиса в pascalABC

Школьная задача на нахождение количества корней квадратного уравнения. При компиляции выдаёт ошибку синтаксиса "main.pas(20,9) Fatal: Syntax error, ";" expected but "identifier WRITELN" found"

program discriminant;
var a, b, c, disc: integer;
begin
writeln('Эта программа находит колличество корней квадратного уравнения');
writeln('ax^2+bx+c=0');

write('A = ');
readln(a);

write('B = ');
readln(b);

write('C = ');
readln(c);

disc := (b*b)-(4*a*c);

if (disc > 0) then
    writeln('D = ', disc)
    writeln('Два корня')
else if (disc = 0) then
    writeln('D = ', disc)
    writeln('Один корень')
else if (disc < 0) then
    writeln('D = ', disc)
    writeln('Корней нет')
end.

Пробовал ставить точки с запятыми в разных вариациях. Не помогло. Как быть?


Ответы (2 шт):

Автор решения: RAlex

Работающий вариант программы. Но это махровый Турбо Паскаль.

program discriminant;

var
  a, b, c, disc: integer;

begin
  writeln('Эта программа находит количество корней квадратного уравнения');
  writeln('ax^2+bx+c=0');
  write('A = ');
  readln(a);
  write('B = ');
  readln(b);
  write('C = ');
  readln(c);
  disc := (b * b) - (4 * a * c);
  if (disc > 0) then begin
    writeln('D = ', disc);
    writeln('Два корня')
  end    
  else if (disc = 0) then begin
    writeln('D = ', disc);
    writeln('Один корень')
  end    
  else if (disc < 0) then begin
    writeln('D = ', disc);
    writeln('Корней нет')
  end
end.

Ниже - код PascalABC.NET:

begin
  Println('Эта программа находит количество корней квадратного уравнения');
  Println('Ax^2+Bx+C=0');
  var (a, b, c) := ReadReal3('введите через пробел A, B, C:');
  var disc := b * b - 4 * a * c;
  Println('D =', disc);
  case Sign(disc) of
  1: Print('Два разных корня');
  0: Print('Два равных корня');
  -1: Print('Действительных корней нет')
  end
end.

введите сюда описание изображения

→ Ссылка
Автор решения: Qwertiy

Точка с запятой ставится между операторами (statement'ами), но не после последнего. Соответственно перед else и end точка с запятой не ставится.

Помимо этого нельзя пихать несколько операторов в if и else - надо их дополнительно оборачивать в begin т end.

if условие then begin
  оператор(1);
  оператор(2);
  оператор(3)
end else ...
→ Ссылка