Ох, сударыня, да что ж Вы накрутили-то такое страшное? Всё гораздо проще. Но прежде - прошу извинить за переход на английский, это не для выпендрежа, а просто у меня DOS-кодировка и потому с кириллицей без необходимости предпочитаю не связываться. Могу, но это напряжно: перегон через самописные конверторы WINDOWS-DOS и обратно... Да ну её! И еще: уж если Вы вводите константу n, то будьте добры задать верхнюю границу диапазона массива записей, как n, а не 3.
Код:
Const
n=5;
Type
bag = record
kol:byte;
ves:real;
end;
Var
passagir:array[1..n] of bag;
i,j,k,i_kol,i_ves,max_kol:byte;
max_ves:real;
b:boolean;
Begin
For i:=1 to n do
with passagir[i] do
begin
Writeln ('Enter the data for ', i,' passenger');
Write('Number of places: ');
Readln (kol);
Write('Whole luggage weight: ');
Readln (ves);
end;
k:=0; //First part beginning
Writeln;
Writeln('Pairs of passengers with coinciding luggage:');
For i:=1 to (n-1) do
for j:=i+1 to n do
if (passagir[j].kol=passagir[i].kol) and (Abs(passagir[j].ves-passagir[i].ves)<=0.5) then
begin
k:=k+1;
Writeln(i:3,' and',j:3);
end;
if k>0 then
Writeln('In all there are ',k,' pairs of passengers with coinciding luggage')
else
Writeln ('No passengers with coinciding luggage');
max_kol:=0; //Second part beginning
max_ves:=0;
For i:=1 to n do
if passagir[i].kol>max_kol then
begin
i_kol:=i;
max_kol:=passagir[i].kol;
end;
For i:=1 to n do
if passagir[i].ves>max_ves then
begin
i_ves:=i;
max_ves:=passagir[i].ves;
end;
Writeln;
if i_kol=i_ves then
begin
b:=TRUE;
for i:=1 to i_kol-1 do
if (passagir[i].kol=passagir[i_kol].kol) and (passagir[i].ves=passagir[i_kol].ves) then b:=FALSE;
for i:=i_kol+1 to n do
if (passagir[i].kol=passagir[i_kol].kol) and (passagir[i].ves=passagir[i_kol].ves) then b:=FALSE;
if b then
begin
Writeln('The luggage of passenger N',i_kol,' exceeds the others luggage:');
Writeln('max_kol= ', max_kol, ' max_ves= ', max_ves:0:3);
end;
end;
if (i_kol<>i_ves) or Not(b) then
Writeln('No passengers with the luggage exceeding others');
Readln
End.
По-моему, задача b) решается - проще некуда: находим номер пассажира с максимальным количеством мест, затем - номер пассажира с максимальным весом багажа, и если эти номера совпадают, то он и есть искомый. Но! Таких пассажиров может оказаться не один, что и проверяется, и если оказывается, что пассажиров с идентичными максимальными количеством и весом багажа больше одного, то выдается ответ, что искомого пассажира нет.