Ошибка: syntax error identifier expected - Free Pascal
Формулировка задачи:
Program UIS;
Uses CRT;
Type TSotr = Record
Fam: String[3];
Pol: Byte;
God: Integer;
End;
Var Sotr: Array [1..14] Of TSotr;
I, Kolman, KolGen,StarZhen,MaxVozrZhen,StarMan,MaxVozrMan,VozrZhen,VozrMan,SrVozrMan,SrVozrZhen: Integer;
Vozr: Real;
Begin
Randomize;
ClrScr;
For I:=1 To 14 Do Begin
With Sotr[I] Do
Begin
ReadLn(Fam);
Pol:=Random(2)+1;
God:=Random(32)+1965;
If Pol=1 Then
Begin KolGen:=KolGen+1;
VozrZhen:=VozrZhen+2016-God;
If VozrZhen>MaxVozrZhen Then Begin
StarZhen:=FIO;
MaxVozrZhen:=VozrZhen;
End;
If Pol=2 Then
Begin KolGen:=KolGen+1;
VozrMan:=VozrMan+2016-God;
If VozrMan>MaxVozrMan Then Begin
StarMan:=FIO;
MaxVozr<Man:=VozrMan;
End;
End;
WriteLn(' FAM',' POL',' GOD');
For I:=1 To 14 Do WriteLn(Sotr[I].Fam:2,Sotr[I].Pol:5,Sotr[I].God:7);
WriteLn(StarZhen, MaxVozrZhen);
WriteLn(StarMan,MaxVozrMan);
VozrZhen:=VozrZhen/KolGen;
VozrMan:=VozrMan/KolMan;
WriteLn('SrVozrMan',VozrMan:7:2);
WriteLn('SrVozrZhen',VozrZhen:7:2);
ReadLn;
End.Решение задачи: «Ошибка: syntax error identifier expected»
textual
Листинг программы
const
SexMale=1; SexFemale=2; curYear=2016;
type
TNameStr = String[31];
TEmployee = record
Name: TNameStr;
Sex: Byte;
Year: Integer;
end;
var
Empl: array [1..14] of TEmployee;
MMaxAgeName,
FMaxAgeName: TNameStr;
MCnt, MSumAge, MMaxAge,
FCnt, FSumAge, FMaxAge,
i, t: Integer;
begin
Randomize;
for i:=Low(Empl) to High(Empl) do with Empl[i] do begin
ReadLn(name);
Sex:=SexMale+Random(SexFemale-SexMale+1);
Year:=1965+Random(32);
case Sex of
SexMale:
begin
Inc(MCnt); t:=curYear-Year;
MSumAge:=MSumAge+t;
if MMaxAge<t then begin
MMaxAge:=t; MMaxAgeName:=Name;
end;
end;
SexFemale:
begin
Inc(FCnt); t:=curYear-Year;
FSumAge:=FSumAge+t;
if FMaxAge<t then begin
FMaxAge:=t; FMaxAgeName:=Name;
end;
end;
end;
end;
WriteLn('Name','':SizeOf(TNameStr)-4,'Sex','Year':5);
for i:=Low(Empl) to High(Empl) do with Empl[i] do
WriteLn(Name,'':SizeOf(TNameStr)-Length(Name),Sex:3,Year:5);
WriteLn('Максимальный возраст');
WriteLn(' мужчин: ',MMaxAge,' ',MMaxAgeName);
WriteLn(' женщин: ',FMaxAge,' ',FMaxAgeName);
WriteLn('Средний возраст');
WriteLn(' мужчин: ',MSumAge/MCnt:0:2);
WriteLn(' женщин: ',FSumAge/FCnt:0:2);
end.
Объяснение кода листинга программы
- В коде определены константы SexMale и SexFemale, а также переменная curYear.
- Задано описание типа записи TEmployee с полями Name, Sex и Year.
- Объявлен массив Empl размером 14 элементов типа TEmployee.
- Объявлены переменные MMaxAgeName, FMaxAgeName, MCnt, MSumAge, MMaxAge, FCnt, FSumAge, FMaxAge, i, t типа Integer.
- В цикле for происходит заполнение данных о сотрудниках.
- Для каждого сотрудника считывается его имя, определяется его пол (мужской или женский) и год рождения.
- Рассчитывается возраст сотрудника в текущем году.
- В зависимости от пола сотрудника, обновляются соответствующие переменные, хранящие максимальный возраст и имя сотрудника с максимальным возрастом.
- Выводится информация о сотрудниках в формате: имя, пол, год рождения.
- Выводится информация о максимальном возрасте мужчин и женщин.
- Рассчитывается средний возраст мужчин и женщин.
- Выводится информация о среднем возрасте мужчин и женщин.