this is an assignment i recieved i have been trying to get it to work but it wont.i edited a couple times but i still get the same messages can anyone assist?
The purpose of the program is to assist with the check-in and searching of guests registered at the La Guardia Oasis Villa Hotel.

Program ReservationSBA (input, output);
Uses crt;
Firstname: array [1..200] of string;
Lastname: array [1..200] of string;
Nights: array[1..10] of integer;
EarlyBdStatus: array[1..200] of char;
Groupsize: array[1..20] of integer;
Status: array[1..200] of string;
Room: array [1..200] of string;
Roomavail, menu, submenu, x, I, guest: integer;
Ebdrate, bronze, silver, gold, platinum, usaexchange, total: real;
Final_cost, discount, Janight_rate, Usnight_rate: real;
Name: string;
Guests_per_room: integer;

Janight_rate := 15500;
Usnight_rate := 200;
Ebdrate := 0.15;
Bronze := 0.02;
Silver := 0.03;
Gold := 0.05;
Platinum := 0.1;
X:= 0;

Writeln (‘1.Check in guests’);
Writeln (‘2.Other options’);
Writeln (‘3.Exit’);

if  menu:=1 then
Writeln (‘please enter First Name ‘);

Readln (Firstname[x]);
Writeln (‘Please enter Last Name’);
Readln (Lastname[x]);
Writeln (‘Please enter status (r-resident nr-non resident)’);
Readln (status[x]);
Writeln(‘Please enter the status’);
Readln (nights[x]);
Writeln (‘Please enter early bird status (Y- yes N- no)’);
Readln (EarlyBdStatus[x]);
Writeln (‘Please enter groupsize’);
Readln (groupsize[x]);
For i:= 1 to 200 do ;
If room[i]:= ‘ ‘ then
Room[i]:= name;
Guests_per_room[i]:= groupsize;

If  status:= ‘r’ then
Total:=nights*Usnight_rate * usaexchange;

If status:=‘nr’ then
Total :=nights*Usnight_rate*usaexchange;

If EarlyBdStatus:= ‘Y’ then
Discount :=EbdRate*total;
If EarlyBdStatus:= ‘N’ and groupsize:= 1 then 
Discount :=bronze*total;
If EarlyBdSattus:=‘N’ and groupsize := 2 then
If EarlyBdStatus:=‘N’ and groupsize:= 3 or groupsize:= 4 or groupsize:= 5 or groupsize:= 6 
Or groupsize:=7 or groupsize:= 8 or groupsize :=9 then
Discount:= gold*total;
If  EarlyBdStatus := ‘N’ and (groupsize>9) then

FinalCost:= total-discount;
Roomavail:= 0;
For x := 1 to room do;
If rooms[X] = ‘ ‘ then
Roomavail:= roomavail + 1;

Writeln (‘Name: ‘, name);
Writeln (‘Cost: $’, total :6:2, ‘ JMD’);
Writeln (‘Discount: $’, discount :6:2, ‘ JMD’);
Writeln(‘Final Total: $’, Final_cost:6:2, ‘ JMD’);
Writeln(‘Room Number: ‘ , i);
Writeln (‘Available rooms: ‘ , roomavail);
Writeln (‘ Total Guests Registered: ‘ , guest);
Until menu:=3 ;


Error message: 61 / 17 secons~1.pas
Error: Illegal qualifier
71 / 1 secons~1.pas
Fatal: Syntax error, UNTIL expected but END found

Edited by pritaeas: Added code tags.

4 Years
Discussion Span
Last Post by blesiw

The end on line 50 is the first problem, then again on 57 and 58. I suggest you read up on basic syntax and control structures.


Looking quickly all your if tests are using wrong syntax. For example row 36 you write (if menu:=1 then) this should either generate an error as this expression menu:=1 is not a test it is an assignment.
You are saying if (menu can be set to 1) not asking is menu set to 1 then do ....
You should be writing if menu=1 then. This is a question. Depending upon your compiler as to what error messages will be shown by your tests. A good compiler will say this is not a question but an assignment which should be in error but some may say this person just wants to set menu to 1 and the if test will check whether it can or not be set to 1 but if it can and since you have declared it as integer yes we can set it to 1 for you and then this test will always be true. Sorry for such a long winded answer but hope it helps and you can see what I am getting at.
PS I see you are from Saint Catherines, I had a friend there once (1972 she was about 15). Her name was Christine Demya.. something. She was in Ukrainian scouts. I wonder what happened to her.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.