program Prihradkove_Trideni; const N = 10; {pocet zaznamu} D = 1; {dolni mez klice} H = 100; {horni mez klice} type Pole = array[1..N] of record klic: integer; {cosi dalsiho ...} end; var i:integer; A:Pole; procedure PrihradkoveTrideni(var A: Pole); var B: Pole; {setridene zaznamy} C: array[D..H] of integer; {hranice prihradek} I, K: integer; begin {Velikosti prihradek:} for I := D to H do C[I] := 0; for I := 1 to N do begin K := A[I].klic; C[K] := C[K] + 1 end; {Konce prihradek:} for I := D+1 to H do C[I] := C[I] + C[I-1]; {Zarazeni zaznamu do prihradek:} for I := N downto 1 do begin K := A[I].klic; B[C[K]] := A[I]; C[K] := C[K] -1 end; {Predani setrideneho pole ven:} A := B end; {procedure PrihradkoveTrideni} begin writeln('Zadej ', N, ' tridenych cisel z rozmezi od ', D, ' do ', H, ' :'); for i:=1 to N do read(A[i].klic); PrihradkoveTrideni(A); writeln('Setrideno:'); for i:=1 to N do write(A[i].klic:5); writeln end.