Создание программ с использованием записей, как правило, трудностей не вызывает. Поэтому ограничимся только теми комментариями, приведенными в тексте программы.
Program Problem52_1; Type Bagaz = Record Kol:Byte; {Количество вещей} Ves:Real; {Вес в килограммах} Sr_Ves_Bag:Real; {Средний вес вещи} End; Var Bagaz_Pas:Array[1..30] Of Bagaz; Flag:Boolean; N,i,Kol1,Kol2:Byte; Sr_Ves:Real; {Средний вес одной вещи всего багажа} Sr_Kol:Real; {Среднее количество вещей} Begin WriteLn('Задайте количество пассажиров:'); ReadLn(N); For i:=1 To N Do With Bagaz_Pas[i] Do Begin WriteLn('Пассажир N',i); Write('Количество вещей: '); ReadLn(Kol); Write('Общий вес: '); ReadLn(Ves); Sr_Ves_Bag:=Ves/Kol; {Средний вес вещи} WriteLn; {Пропуск пустой строки} End; Sr_Ves:=0; {Начальные значения} Sr_Kol:=0; {Нахождение среднего веса вещи всего багажа и} {среднего количества вещей} For i:=1 To N Do With Bagaz_Pas[i] Do Begin Sr_Ves:=Sr_Ves+Sr_Ves_Bag; Sr_Kol:= Sr_Kol+Kol; End; Sr_Ves:=Sr_Ves/N; Sr_Kol:=Sr_Kol/N; WriteLn('Задание а)'); Flag:=False; For i:=1 To N Do With Bagaz_Pas[i] Do If abs(Sr_Ves_Bag-Sr_Ves)<=0.3 Then Begin WriteLn('Кол-во вещей: ',Kol,' их вес: ',Ves); Flag:=True; End; If Not Flag Then WriteLn('Таких нет'); WriteLn('Задание б)'); Kol1:=0; {Кол-во пассажиров, имеющих более 2-х вещей} Kol2:=0; {Кол-во пассажиров, вещей у которых} {больше среднего} For i:=1 To N Do With Bagaz_Pas[i] Do Begin If Kol>2 Then Kol1:=Kol1+1; If Kol>Sr_Kol Then Kol2:=Kol2+1; End; WriteLn('Пассажиров, у которых больше 2-х вещей: ', Kol1); WriteLn('Пассажиров, у которых вещей больше среднего: ', Kol2); WriteLn('Задание в)'); Flag:=False; For i:=1 To N Do With Bagaz_Pas[i] Do If (Kol=1) and (Ves<30) Then Flag:=True; If Flag Then WriteLn('Такой пассажир имеется') Else WriteLn('Такого пассажира нет'); End.