Ошибка синтаксиса в 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 ...
