PDA

View Full Version : پیغام خطا در پاسکال



idan1994
چهارشنبه 22 آذر 1391, 22:20 عصر
سلام من این برنامرو تو محیط پاسکال نوشتم اما وقتی ران می کنم پیغام خطایerror 37:end expected میده .
[LEFT]
Program student;
Type
s=Record;
stid: integer;
name,family: string [10];
age: Byte;
file:Text:
End;
st=array [1.. 100] of s;
Var
record: st;
n,i,ch: integer;
Procedure add;
Begin
Assing(file,’student.txt’);
if n=100 then
exit;
inc (n);
Writeln (n);
Readln (file,record [n]. stid,record [n].name,record [n].family,record [n].age);
Close(file);
End;
Procedure delete;
Reset(file);
Var
st,i,j: integer;
Begin
Readln (st);
For i:=1 to n do
if record [i].stid=st then
Begin
For j:=i to n-1 do
record [j]:=record [j+1];
dec (n);
exit;
close(file);
End;
Procedure dispall;
Reset(file);
Var
i: integer;
a: Real;
Begin
For i:=1 to n do
Begin
Writeln (file,record [i].stid,record [i].name ,record [i].family,record [i].age);
End;
Close(file);
End;
Begin
Readln (n);
For i:=1 to n do
Begin
Writeln (i);
Readln (file,record [i].stid ,record[i].name ,record [i].family, record [i].age);
End;
Procedure search;
Reset(file);
Var
I,z: integer;
a: Real;
flag:=false;
k:=0;
fam:string;
Writeln(‘Enter family for search : ‘);
Readln(file,fam);
While(j<=z) and (flag) do
Begin
j:=j+1;
If (file,record [i].family)=fam then
k:=j;
Begin
Flag:=true;
End;
End;
If flag then
Writeln(‘Found!’);
Writeln(file,record [j].stid ,record[j].name ,record [j].family, record [j].age);
Else
Writeln(‘Not Found!’);
Repeat
Writeln(‘Enter your choise : ‘);
Writeln(‘1.Add Student’);
Writeln(‘2.Delete Student’);
Writeln(‘3.Display All Student’);
Writeln(‘4.Search by family’);
Writeln(‘5.Exit’);
Readln (ch);
case ch of
1: add;
2: delete;
3: dispall;
4: search;
5: exit;
End;
Readln (ch);
Until False;
End.

سعید صابری
پنج شنبه 23 آذر 1391, 13:02 عصر
برای نوشتن کد پاسکال بهتره از تگ PAS استفاده کنی تا قابل خواندن باشه

program student;
Type
s=Record;
stid: integer;
name,family: string [10];
age: Byte;
file:Text:
End;
st=array [1.. 100] of s;
Var
record: st;
n,i,ch: integer;
Procedure add;
Begin
Assing(file,’student.txt’);
if n=100 then
exit;
inc (n);
Writeln (n);
Readln (file,record [n]. stid,record [n].name,record [n].family,record [n].age);
Close(file);
End;
Procedure delete;
Reset(file);
Var
st,i,j: integer;
Begin
Readln (st);
For i:=1 to n do
if record [i].stid=st then
Begin
For j:=i to n-1 do
record [j]:=record [j+1];
dec (n);
exit;
close(file);
End;
Procedure dispall;
Reset(file);
Var
i: integer;
a: Real;
Begin
For i:=1 to n do
Begin
Writeln (file,record [i].stid,record [i].name ,record [i].family,record [i].age);
End;
Close(file);
End;
Begin
Readln (n);
For i:=1 to n do
Begin
Writeln (i);
Readln (file,record [i].stid ,record[i].name ,record [i].family, record [i].age);
End;
Procedure search;
Reset(file);
Var
I,z: integer;
a: Real;
flag:=false;
k:=0;
fam:string;
Writeln(‘Enter family for search : ‘);
Readln(file,fam);
While(j<=z) and (flag) do
Begin
j:=j+1;
If (file,record [i].family)=fam then
k:=j;
Begin
Flag:=true;
End;
End;
If flag then
Writeln(‘Found!’);
Writeln(file,record [j].stid ,record[j].name ,record [j].family, record [j].age);
Else
Writeln(‘Not Found!’);
Repeat
Writeln(‘Enter your choise : ‘);
Writeln(‘1.Add Student’);
Writeln(‘2.Delete Student’);
Writeln(‘3.Display All Student’);
Writeln(‘4.Search by family’);
Writeln(‘5.Exit’);
Readln (ch);
case ch of
1: add;
2: delete;
3: dispall;
4: search;
5: exit;
End;
Readln (ch);
Until False;
End

در کل اینجوری record را اشتباه تعریف کرد.بهتر یک مروری در مورد سینتکس record در پاسکال داشته باشی.همچنین طیقه استفاده هم اشتباه است.
در ضمن از کلمات کلیدی هم به جای نمام متغییر نمیتونی استفاده کنی.
اصلا کلش خرابه.همینجوری فقط کپی زدی