program alrendezes4; uses crt; const n=6; m=6; type rec=record nev:string[40]; jegy:byte; end; type tomb=array[1..n] of rec; var x:tomb; y:array[1..5] of tomb; oszt:byte; db:array[1..5] of integer; procedure beolvas; var i:integer; begin for i:=1 to n do begin write(i,'. nev:'); readln(x[i].nev); write(i,'. osztalyzat:'); readln(x[i].jegy); end; end; {procedure kivalogat; begin dbi:=1 for i:=1 to n do if t1(x[i].jegy) then begin inc (db1); y[dbi]:=x[i]; end; end; for i:=db1+1 to dbi end;} Procedure alrendez; var i:integer; begin For i:=1 to m do begin oszt:=x[i].jegy; db[oszt]:=db[oszt]+1; y[oszt,db[oszt]]:=x[i]; end; {A legrosszabb megoldas: begin db[x[i].jegy]:=db[x[i].jegy]+1 y[x[i].jegy,db[x[i].jegy]]:=x[i] end;} {Egy jobb megoldas: For j:=1 to 5 do If x[i].jegy=j then db[j]:=db[j]+1 and y[j,db[j]]:=x[i] end; end;} end; procedure kiiras; var i,j:integer; begin for i:=1 to 5 do begin for j:=1 to db[i] do begin writeln (' '); write(i); writeln(y[i,j].nev); writeln(y[i,j].jegy); writeln (' '); end; end; readln; end; procedure osszefuttat(x,z:tomb;var s:tomb); {Ez x-et es z-t futtatja ossze - s sorozatba.} {Ezek pedig csak formalis parameterek, meghivva csak lent lesznek.} var i,j,db:byte; begin db:=0; i:=1; j:=1; while (i<=n) and (j<=1) do begin db:=db+1; if (x[i]z[j]) then begin s[db]:=z[j]; j:=j+1; end; else (x[i]=z[j]) then begin s[db]:=x[i]; i:=i+1; db:=db+1; s[db]:=z[j]; j:=j+1; end; end; end; begin beolvas; alrendez; {kiiras;} osszefuttat(y[1],y[2],y[6]); osszefuttat(y[6],y[3],y[7]); osszefuttat(y[7],y[4],y[9]); osszefuttat(y[9],y[5],y[10]); end.