Синтаксическая ошибка Паскаля 85

Во-первых, я новичок в программировании и только начал изучать Паскаль. Я столкнулся с ошибкой 85: ";" ожидал. Я просмотрел все это несколько раз, но я не смог найти проблему. Какие-либо предложения?

Вот код:

program test;
var
  a,b,c:real;
begin
  D:=sqr(b)-4*a*c;
  writeln('Enter a value for a');
  readln(a);
  writeln('Enter a value for b');
  readln(b);
  writeln('Enter a value for c');
  readln(c);
  if ( D<0 ) then
  begin
    writeln('There is no solution.');
  else
  if ( D>0 ) then
  begin
    x1:=(-b+sqrt(D))/2*a;
    x2:=(-b-sqrt(D))/2*a;
    writeln('x1 is:');
    writeln('x1:=',x1);
    writeln(x2 is:);
    writeln('x2:=',x2);
  end;
end.

person user3385057    schedule 05.03.2014    source источник
comment
Вы не получили номер строки, где произошла ошибка? Кроме того, сделайте отступ в своем коде.   -  person Michael    schedule 05.03.2014
comment
Неа. Он отображал только ошибку 85. Тем не менее, спасибо за ваш комментарий и предложение сделать отступ в моем коде. В будущем постараюсь делать это чаще.   -  person user3385057    schedule 06.03.2014


Ответы (2)


У вас есть три оператора begin и только два оператора end. Сделайте отступ в коде, и вы заметите свою ошибку. Переменные D, X1 и X2 также не определены. В вашем выводе есть и другие синтаксические ошибки, например, отсутствуют галочки ' в одном из ваших writeln операторов ближе к концу.

person Brian English    schedule 05.03.2014
comment
Спасибо, что поправили меня. В будущем я постараюсь сделать отступ в своем коде, а также более тщательно проверить его на наличие ошибок. - person user3385057; 06.03.2014
comment
Да, это заблуждение. Это было вызвано точкой с запятой в конце writeln('There is no solution.'); строки кода. Было бы лучше, если бы компилятор выдавал "Remove semicolon from statement prior to else clause". В Паскале, если есть else, то никогда не должно быть точки с запятой в предыдущем операторе. - person Brian English; 07.03.2014

И вам нужно end перед остальным ..

program test;
var
  a,b,c:real;
begin
  D:=sqr(b)-4*a*c;
  writeln('Enter a value for a');
  readln(a);
  writeln('Enter a value for b');
  readln(b);
  writeln('Enter a value for c');
  readln(c);
  if ( D<0 ) then
  begin
    writeln('There is no solution.');
  end 
  else
  if ( D>0 ) then
  begin
    x1:=(-b+sqrt(D))/2*a;
    x2:=(-b-sqrt(D))/2*a;
    writeln('x1 is:');
    writeln('x1:=',x1);
    writeln(x2 is:);
    writeln('x2:=',x2);
  end;
end.
person Rohit Gupta    schedule 07.05.2015