Clarinetking
Clarinetking

Reputation: 143

Pascal if/else program syntax error

I have created a program to determine if a quadratic equation gives a 'real' number as its answer and if so, what it is. However, this is my first time working with if/else so my program won't compile past the else and, after searching for half an hour I'm no closer to finding out why Code is as follows:

program Quadratic_Equation_Solver;

{$mode objfpc}{$H+}

uses
  Classes, SysUtils, CustApp;
  var
    a, b, c : real;
begin
   writeln('Insert the Value for a please');
   readln(a);
   writeln('Insert the Value for b please');
   readln(b);
   writeln('Insert the Value for c please');
   readln(c);
   if (-4*a*c<b*b) then
      writeln('These variables return an imaginary quantity that');
      writeln('Cannot be computed. Please try again');
      readln;
   (*here it breaks*) else
   Writeln('The Answer is x = ',(-b+sqrt((b*b)-(4*a*c))/(2*a)):8:2);
   readln;
end.

At the break it says it needs a semi-colon but that hasn't worked

Upvotes: 2

Views: 10153

Answers (2)

highschoolcoder
highschoolcoder

Reputation: 3

You can't use semicolons in your last statement before your else statement.

program Quadratic_Equation_Solver;

{$mode objfpc}{$H+}

uses
Classes, SysUtils, CustApp;
var
a, b, c : real;
begin
 writeln('Insert the Value for a please');
 readln(a);
 writeln('Insert the Value for b please');
 readln(b);
 writeln('Insert the Value for c please');
 readln(c);
   if (-4*a*c>b*b) then
    begin
    writeln('These variables return an imaginary quantity that');
    writeln('Cannot be computed. Please try again')
   end (*When using an else statement dont use semicolons*)    
 else 
Writeln('The Answer is x = ',(-b+sqrt((b*b)-(4*a*c))/(2*a)):8:2);
readln;
end.

Upvotes: 0

oɔɯǝɹ
oɔɯǝɹ

Reputation: 7625

It looks like you're missing a begin and end statement inside your if and else sections. The compiler needs these to determine what line of code is included in the if or the else codepath:

if some condition then
begin
    ...
end
else
begin
    ...
end

so in your case:

program Quadratic_Equation_Solver;

{$mode objfpc}{$H+}

uses
  Classes, SysUtils, CustApp;
  var
    a, b, c : real;
begin
   writeln('Insert the Value for a please');
   readln(a);
   writeln('Insert the Value for b please');
   readln(b);
   writeln('Insert the Value for c please');
   readln(c);
   if (-4*a*c>b*b) then
   begin
      writeln('These variables return an imaginary quantity that');
      writeln('Cannot be computed. Please try again');
   end
   else
   begin
     Writeln('The Answer is x = ',(-b+sqrt((b*b)-(4*a*c))/(2*a)):8:2);
   end
   readln;
end.

Upvotes: 4

Related Questions