klasscho

Untitled

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