Как уже сказали, читать такой код трудно. Вот какое подозрение закралось:
Код:
for i:=1 to n do
begin
if (m[i].s<>0) and (m[i].ch<>0) then sr:=m[i].ch/m[i].s;
writeln(m[i].name,' ',sr:0:2);
if col>max then
begin
max:=col;
k:=i;
end;
end;
Видимо в этом блоке должно быть не Col а m[i].col