fork download
  1. program ideone;
  2.  
  3. {$MODE OBJFPC}{$LONGSTRINGS ON}
  4.  
  5. const
  6. N = 3;
  7. M = 3;
  8.  
  9. type
  10. T1DNumbers = array [0 .. N * M - 1] of UInt8;
  11. T2DNumbers = array [0 .. N - 1, 0 .. M - 1] of UInt8;
  12.  
  13. procedure FillNumbers(out ANumbers: T2DNumbers);
  14. var
  15. LNumbers: T1DNumbers absolute ANumbers;
  16. LNumIdx: Integer;
  17. begin
  18. for LNumIdx := Low(LNumbers) to High(LNumbers) do
  19. LNumbers[LNumIdx] := Random(10);
  20. end;
  21.  
  22. procedure SortNumbers(var ANumbers: T2DNumbers);
  23. var
  24. LNumbers: T1DNumbers absolute ANumbers;
  25. LSize, LNumIdx: Integer;
  26. LSwap: UInt8;
  27. begin
  28. for LSize := Low(LNumbers) to High(LNumbers) do
  29. for LNumIdx := Low(LNumbers) to High(LNumbers) - 1 do
  30. if LNumbers[LNumIdx] > LNumbers[LNumIdx + 1] then
  31. begin
  32. LSwap := LNumbers[LNumIdx];
  33. LNumbers[LNumIdx] := LNumbers[LNumIdx + 1];
  34. LNumbers[LNumIdx + 1] := LSwap;
  35. end;
  36. end;
  37.  
  38. procedure SortNumbersCol(var ANumbers: T2DNumbers);
  39. var
  40. LNumbers: T2DNumbers;
  41. LCol, LRow: Integer;
  42. begin
  43. LNumbers := ANumbers;
  44. SortNumbers(LNumbers);
  45.  
  46. for LCol := Low(LNumbers) to High(LNumbers) do
  47. for LRow := Low(LNumbers[LCol]) to High(LNumbers[LCol]) do
  48. ANumbers[LCol, LRow] := LNumbers[LRow, LCol];
  49. end;
  50.  
  51. procedure ShowNumbersAs1D(const ANumbers: T2DNumbers);
  52. var
  53. LNumbers: T1DNumbers absolute ANumbers;
  54. LNumber: UInt8;
  55. begin
  56. for LNumber in LNumbers do
  57. Write(LNumber:2);
  58.  
  59. Write(LineEnding, LineEnding);
  60. end;
  61.  
  62. procedure ShowNumbersAs2D(const ANumbers: T2DNumbers);
  63. var
  64. LColIdx: Integer;
  65. LNumber: UInt8;
  66. begin
  67. for LColIdx := Low(ANumbers) to High(ANumbers) do
  68. begin
  69. for LNumber in ANumbers[LColIdx] do
  70. Write(LNumber:2);
  71.  
  72. WriteLn();
  73. end;
  74.  
  75. WriteLn();
  76. end;
  77.  
  78. var
  79. LNumbers: T2DNumbers;
  80. begin
  81. Randomize();
  82.  
  83. FillNumbers(LNumbers);
  84. ShowNumbersAs1D(LNumbers);
  85. ShowNumbersAs2D(LNumbers);
  86.  
  87. SortNumbers(LNumbers);
  88. ShowNumbersAs1D(LNumbers);
  89. ShowNumbersAs2D(LNumbers);
  90.  
  91. SortNumbersCol(LNumbers);
  92. ShowNumbersAs1D(LNumbers);
  93. ShowNumbersAs2D(LNumbers);
  94. end.
  95.  
Success #stdin #stdout 0s 340KB
stdin
Standard input is empty
stdout
 8 9 7 5 1 0 0 0 1

 8 9 7
 5 1 0
 0 0 1

 0 0 0 1 1 5 7 8 9

 0 0 0
 1 1 5
 7 8 9

 0 1 7 0 1 8 0 5 9

 0 1 7
 0 1 8
 0 5 9