Разбор задачи 1126. ICQ
Объявление структур данных
type info=
record
fam:string; { фамилия }
icq:integer; { номер ICQ }
end;
var
a:array[1..100] of info; { информация по ученикам }
t:info; { временная переменная для обмена }
n,k,i,j:integer;
s:string; { строка для ввода информации по ученику }
flg:boolean; { флаг, что массив упорядочен }
Ввод информации
readln(n,k);
for i:=1 to n do
begin
readln(s); { так как в одной строке содержатся текст и число,
необходимо ввести эту информацию одной строкой,
а затем разбить на части }
a[i].fam:=copy(s,1,pos(' ',s)-1); { выделяем фамилию до пробела }
val(copy(s,pos(' ',s)+1,20),a[i].icq,j); { строку после пробела преобразуем в число }
end;
Сортировка по ICQ
repeat
flg:=true; { массив упорядочен }
for i:=1 to n-1 do
{ сравниваем соседние элементы }
if a[i].icq>a[i+1].icq then { найден беспорядок }
begin
t:=a[i]; { меняем местами i и i+1 элементы }
a[i]:=a[i+1];
a[i+1]:=t;
flg:=false; { массив не упорядочен }
end;
until flg; { пока массив не будет упорядочен }
Сортировка первых
`K` учеников по фамилии, выполняется аналогично
repeat
flg:=true;
for i:=1 to k-1 do
if a[i].fam>a[i+1].fam then
begin
t:=a[i];
a[i]:=a[i+1];
a[i+1]:=t;
flg:=false;
end;
until flg;
Вывод результата
for i:=1 to k do
writeln(a[i].fam);