Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 304
  • Last Modified:

Getting error in statement in both programs

I'm getting an error in statement in both of these. The error in statement occurs at the else in both of these.

var name: string;
    numb: integer;
    wt: integer;
    AppFile: text;

procedure GETDATA (var localAppFile: text;
                   var localname: string;
                   var localnumb: integer;
                   var localwt: integer);

  begin
    readln (localAppFile, localname);
    readln (localAppFile, localnumb);
    readln (localAppFile, localwt);
  end; {GETDATA}

procedure POSITION;
    begin
      if (numb < 10) and (wt < 180) then
        writeln ('Accepted ');
      else
        begin
           writeln ('Rejected ');
           writeln ('Your weight is more than the given weight ');
           writeln ('The number of cigarettes you smoke is over the limit ');
        end;
    end; {POSITION}

begin {main}
  assign (AppFile, 'A:\AppFile2.dat');
  reset (AppFile);
  while not seekeof (AppFile) do
     begin
        GETDATA (AppFile, name, numb, wt);
        POSITION;
     end;
  close (Appfile)
end.

****************************************
var state: string;
    capital : string;
    Statefile: text;
    tries: integer;
    guess: string;

procedure GETDATA (var localStatefile: text;
                   var localstate: string;
                   var localcapital: string);

   begin
      readln (localStatefile, localstate);
      readln (localStatefile, localcapital);
   end; {GETDATA}

procedure GUESS_CAPITAL (var tries: integer;
                         guess: string);

   begin{GUESS_CAPITAL}
     tries := 0;
     repeat
       tries := tries + 1;
       write ('Give capital of ', state, ' ' );
       readln (guess)
     until (guess = capital) or (tries <= 4);
      if guess = capital then
        writeln ('Nice work.  You got it on try ', tries);
      else
          begin{until}
           writeln ('You did not get it in 4 tries or less');
           writeln ('The correct answer is ' , capital)
          end;{until}
   end;{GUESS_CAPITAL}


begin {main}
     assign (Statefile, 'A:\state2.dat');
     reset (Statefile);
     while not seekeof (Statefile) do
       begin
         GETDATA (Statefile, state, capital);
         GUESS_CAPITAL (tries, guess);
       end;
     close (Statefile)
end.

0
kazooie21
Asked:
kazooie21
  • 2
1 Solution
 
My name is MudCommented:
Here's your problem...


if (numb < 10) and (wt < 180) then
  writeln ('Accepted '); <-this semicolon does not belong in here if you're gona make an ELSE statement...
else


if guess = capital then
  writeln ('Nice work.  You got it on try ', tries); <-Same here...
else


If <condition> Then
  <sentence>;

If <condition> Then
  Begin
    <sentence>;
    <sentence>;
    <sentence>   {<- This last sentence before the End can be like this, without semicolon}
  End;

If <condition> Then
  <sentence>
Else
  <sentence>;

If <condition> Then
  Begin
    <sentence>;
    <sentence>
  End
Else
  <sentence>;

If <condition> Then
  <sentence>
Else
  Begin
    <sentence>;
    <sentence>
  End;

If <condition> Then
  Begin
    <sentence>;
    <sentence>
  End
Else
  Begin
    <sentence>;
    <sentence>
  End;


See the path here??? Learn to use the IF-THEN-ELSE and the nested IFs Like:

If <condition1> Then
  If <condition2> Then
    If <condition3> Then
      <sentence>

Will be like:
  If <condition1> And <condition2> And <condition3> Then
    <sentence>


And know how to use it like:
If <condition> Then
  <sentence>
Else If <condition> Then
  <sentence>
Else If <condition> Then
  <sentence>
Else
  <sentence>
0
 
My name is MudCommented:
Just think about it, like in real life...

Suppose you're walking in a street, and there's a 10 dollar bill, laying in the street side, what would you do??? pick it up; So...
  If <dollar bill in street side> Then
    <pick it Up>;

But what if there were two bills??? well you pick one, then the other...
  If <dollar bills in street side> Then
    Begin {you have to use it to state the begin of a "Block"}
      <Pick up first bill>;
      <Pick up second bill>
    End;

But what if they were pooped???
  If <dollar bill in street> AND NOT<pooped> Then
    <Pick up bill>
  Else
    <walk away>;

Then what if there were 2 bills, and you really, really need 'em...
  If <dollar bill in street> AND NOT <pooped> Then
    Begin
      <pick up first bill>;
      <pick up second bill>
    End
  Else
    Begin
      <clean first pooped bill>
      <pick up bill>
      <clean second pooped bill>
      <pick up bill>
    End;

Now you could create a procedure to "clean the pooped bill", or something to optimize your code...
0

Featured Post

Vote for the Most Valuable Expert

It’s time to recognize experts that go above and beyond with helpful solutions and engagement on site. Choose from the top experts in the Hall of Fame or on the right rail of your favorite topic page. Look for the blue “Nominate” button on their profile to vote.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now