Ошибка: 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.

Объяснение кода листинга программы

  1. В коде определены константы SexMale и SexFemale, а также переменная curYear.
  2. Задано описание типа записи TEmployee с полями Name, Sex и Year.
  3. Объявлен массив Empl размером 14 элементов типа TEmployee.
  4. Объявлены переменные MMaxAgeName, FMaxAgeName, MCnt, MSumAge, MMaxAge, FCnt, FSumAge, FMaxAge, i, t типа Integer.
  5. В цикле for происходит заполнение данных о сотрудниках.
  6. Для каждого сотрудника считывается его имя, определяется его пол (мужской или женский) и год рождения.
  7. Рассчитывается возраст сотрудника в текущем году.
  8. В зависимости от пола сотрудника, обновляются соответствующие переменные, хранящие максимальный возраст и имя сотрудника с максимальным возрастом.
  9. Выводится информация о сотрудниках в формате: имя, пол, год рождения.
  10. Выводится информация о максимальном возрасте мужчин и женщин.
  11. Рассчитывается средний возраст мужчин и женщин.
  12. Выводится информация о среднем возрасте мужчин и женщин.

Оцени полезность:

8   голосов , оценка 3.75 из 5