klasscho

Untitled

Jan 6th, 2020
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. program Project13;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. SysUtils, Windows;
  7.  
  8. var
  9. InputFile, OutputFile: TextFile;
  10. Size, Max, i, j, k: Integer;
  11. Arr, Counter: array of Integer;
  12. Result: string;
  13.  
  14. Procedure InputArray;
  15. var
  16. i: Integer;
  17. begin
  18. AssignFile(InputFile, 'input.txt');
  19. Reset(InputFile);
  20. Readln(InputFile, size);
  21. SetLength(Arr, Size);
  22. Dec(Size);
  23. for i:= 0 to Size do
  24. begin
  25. Read(InputFile, Arr[i]);
  26. Write(Arr[i], ' ');
  27. end;
  28. CloseFile(InputFile);
  29. end;
  30.  
  31. Procedure FindMax;
  32. var
  33. i: Integer;
  34. begin
  35. Max := Arr[0];
  36. Dec(Size);
  37. for i:= 0 to Size do
  38. begin
  39. if (Arr[i] > Max) then
  40. Max := Arr[i];
  41. end;
  42. end;
  43.  
  44. Procedure FindCounter;
  45. var
  46. i: Integer;
  47. begin
  48. SetLength(Counter, Max + 1);
  49. Dec(Size);
  50. for i:= 0 to Size do
  51. begin
  52. Inc(counter[arr[i]]);
  53. end;
  54. end;
  55.  
  56. Procedure Sort;
  57. var
  58. i: Integer;
  59. begin
  60. j:= 0;
  61. k:= 0;
  62. Dec(Size);
  63. for i:= 0 to Size do
  64. begin
  65. if (k >= Counter[j]) then
  66. Inc(j);
  67. while (Counter[j] = 0) do
  68. Inc(j);
  69. k:= 0;
  70. Arr[i]:= j;
  71. Inc(k);
  72. end;
  73. end;
  74.  
  75. Procedure ArrayToString;
  76. var
  77. i: Integer;
  78. begin
  79. Dec(Size);
  80. for i:= 0 to Size do
  81. begin
  82. Result:= Result + IntToStr(Arr[i]) + ' ';
  83. end;
  84. end;
  85.  
  86. Procedure SaveResult;
  87. begin
  88. AssignFile(OutputFile, 'output.txt');
  89. Rewrite(OutputFile);
  90. Write(OutputFile, Result);
  91. Writeln('Файл сохранен.');
  92. CloseFile(OutputFile);
  93. end;
  94.  
  95. begin
  96. Writeln('Данная програма производит сортировку массива подсчетом.');
  97. try
  98. if (FileExists('input.txt')) then
  99. begin
  100. Writeln('Данный массив:');
  101. InputArray;
  102. FindMax;
  103. FindCounter;
  104. Sort;
  105. ArrayToString;
  106. Writeln;
  107. Writeln('Матрица после преобразования:');
  108. Writeln(result);
  109. if (FileExists('output.txt')) then
  110. SaveResult
  111. else Writeln('Файла "output.txt" не существует');
  112. end
  113. else Writeln('Файла "input.txt" не существует');
  114. except
  115. on err: EInOutError do
  116. Write('Ошибка при чтении массива из файла');
  117. else Write('Ошибка');
  118. end;
  119. Readln;
  120. end.
Advertisement
Add Comment
Please, Sign In to add comment