Решение олимпиадных задач. Школьный этап Всероссийской олимпиады школьников по информатике учебный год. Задача «Танцевальный кружок» Учитель информатики МБОУ «СОШ 23» с углубленным изучением отдельных предметов Пуликова С.А.
Танцевальный кружок В массиве А1 записаны фамилии мальчиков, в массиве А2 – соответственно рост каждого мальчика. В массиве В1 – фамилии девочек, в массиве В2 – соответственно их рост. В танцевальном кружке детей расставляют парами: самая высокая девочка и самый высокий мальчик, и т.д. Последней будет пара: самая маленькая девочка – самый маленький мальчик. Вывести массив С содержащий пофамильный список пар. Если вариантов пар несколько, можно вывести любой из них. Массивы А1, А2, В1, В2 имеют одинаковый размер n<10 A1A2B1B2С Иванов 161 Умкина 171 Киреев Умкина Киреев 170 Фадеева 154 Иванов Фадеева Фомин 152 Белова 148 Фомин Белова
A1A2B1B2 Иванов 161 Умкина 171 Киреев 170 Фадеева 154 Фомин 152 Белова 148
A1A2B1B2 Иванов 161 Умкина 171 Киреев 170 Фадеева 154 Фомин 152 Белова 148
A1A2B1B2 Фомин 152 Белова 148 Иванов 161 Фадеева 154 Киреев 170 Умкина 171
Программа на языке Pascal. Клавиатурный ввод. Массивы.
Program tanc_kr_massivi; Const R=10; Type MyA1=array[1..r]of string; MyA2=array[1..r]of Integer; Var A1,B1:MyA1; A2,B2:MyA2; N,i:integer; Procedure Sort(N:integer;Var X1:MyA1; X2:MyA2); Var k,i,w:integer; s:string; Begin For k:=1 To N-1 Do For i:=1 To N-k Do If X2[i]>X2[i+1] Then Begin s:=X1[i]; w:=X2[i]; X1[i]:=X1[i+1]; X2[i]:=X2[i+1]; X1[i+1]:=s; X2[i+1]:=w;end; End; Begin ReadLn(N); For i:=1 To N Do Begin readLn(A1[i]); readLn(A2[i]); readLn(B1[i]); readLn(B2[i]); End; For i:=1 To N Do Begin A3[i]:=i; B3[i]:=i; End; Sort(N,A1,A2); Sort(N,B1,B2); For i:=N DownTo 1 Do writeln(A1[i],' ',B1[i]); End.
Программа на языке Pascal. Файловый ввод-вывод. Тип данных – записи.
Program bn; Const Z=10; type row=integer; ngrow=record fam:string; grow:row; end; var a,b:array[1..Z] of ngrow; i,n,k,d,w:integer; g:ngrow; input,output:text; c:char; dc:string; x:integer; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); readln(input,n); for i:=1 to n do begin repeat read(input,c); a[i].fam:=a[i].fam+c; until c=' '; read(input,a[i].grow); read(input,c); repeat read(input,c); b[i].fam:=b[i].fam+c; until c=' '; readln(input,b[i].grow); end;
for i:=1 to n-1 do for k:=1 to n-i do if a[k].grow>a[k+1].grow then begin g:=a[k]; a[k]:=a[k+1]; a[k+1]:=g; end; for i:=1 to n-1 do for k:=1 to n-i do if b[k].grow>b[k+1].grow then begin g:=b[k]; b[k]:=b[k+1]; b[k+1]:=g; end; for i:=n downto 1 do writeln(output,a[i].fam,' ',b[i].fam); close(input); close(output); end.