Показать сообщение отдельно
Старый 08.01.2016, 11:06   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вот, что-то такое сотворил и отладил:
Код:
Const
 N=10;

Type
 anketa=record
         vosr:17..21;
         curs:1..3;
         FIO:record
              name:string[10];
              otch_vo:string[20];
             end;
        end;

 C_Dat=record
        Ns:Byte;
        Nm,Np:Array[1..N] of string[10];
        Na:Array[1..N] of Byte;
       end;

Var
 student:array [1..N] of anketa;
 Cr_Dt:Array[1..3] of C_Dat;
 Numb:Array[1..N] of Byte;
 i,j,C,k_max,Imax,D:integer;

Begin
 for i:=1 to N do
  with student[i] do
   begin
    writeln ('Enter the data for ', i, ' student');
    write('Name: ');
    readln(FIO.name);
    write('Patronymic: ');
    readln(FIO.otch_vo);
    write('Age: ');
    readln(vosr);
    write('Course: ');
    readln(curs);
    with Cr_Dt[curs] do
     begin
      Ns:=Ns+1;
      Nm[Ns]:=FIO.name;
      Np[Ns]:=FIO.otch_vo;
      Na[Ns]:=vosr;
     end;
   end;

 writeln('List of sudents:');
 for i:=1 to N do
  with student[i] do
   begin
    write(FIO.name);
    D:=15-Length(FIO.name);
    for j:=1 to D do write(' ');
    write(FIO.otch_vo);
    D:=15-Length(FIO.otch_vo);
    for j:=1 to D do write(' ');
    writeln(vosr:5,Curs:5);
   end;

 writeln('Press "Enter" to continue');
 readln;

 for C:=1 to 3 do
  begin
   Writeln('Course ',C,':');
   with Cr_Dt[C] do
    begin
     for i:=1 to Ns do
      begin
       Numb[i]:=1;
       for j:=1 to Ns do
        if (j<>i) and (Nm[j]=Nm[i]) then Inc(Numb[i]);
      end;
     k_max:=0;
     for i:=1 to Ns do
      if Numb[i]>k_max then
       begin
        k_max:=Numb[i];
        Imax:=i;
       end;
     if k_max=1 then
      writeln('All names are different')
     else
      writeln ('Common name: ', Nm[Imax]);

     for i:=1 to Ns do
      begin
       Numb[i]:=1;
       for j:=1 to Ns do
        if (j<>i) and (Np[j]=Np[i]) then Inc(Numb[i]);
      end;
     k_max:=0;
     for i:=1 to Ns do
      if Numb[i]>k_max then
       begin
        k_max:=Numb[i];
        Imax:=i;
       end;
     if k_max=1 then
      writeln('All patronymics are different')
     else
      writeln ('Common patronymic: ', Np[Imax]);

     for i:=1 to Ns do
      begin
       Numb[i]:=1;
       for j:=1 to Ns do
        if (j<>i) and (Na[j]=Na[i]) then Inc(Numb[i]);
      end;
     k_max:=0;
     for i:=1 to Ns do
      if Numb[i]>k_max then
       begin
        k_max:=Numb[i];
        Imax:=i;
       end;
     if k_max=1 then
      writeln('All ages are different')
     else
      writeln ('Common age: ', Na[Imax]);
    end;
   writeln;
  end;

 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070