Ну вот, что-то такое сотворил и отладил:
Код:
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.