Advertisement
dxvmxnd

Untitled

Nov 11th, 2023
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.65 KB | None | 0 0
  1. Program L2_4_D;
  2.  
  3. Uses
  4. System.SysUtils;
  5.  
  6. Type
  7. TArray = Array of Integer;
  8.  
  9.  
  10. Function SizeFromConsole() : Integer;
  11. Var
  12. IsCorrect : Boolean;
  13. Size : Integer;
  14. Begin
  15. Repeat
  16. IsCorrect := True;
  17. Writeln('Введите количество элементов в массиве');
  18. Try
  19. Readln(Size);
  20. Except
  21. IsCorrect := False;
  22. Writeln('Неверный тип данных');
  23. End;
  24. If (Size < 1) Then
  25. Begin
  26. IsCorrect := False;
  27. Writeln('Неверный тип данных');
  28. End;
  29. Until IsCorrect;
  30.  
  31. SizeFromConsole := Size;
  32. End;
  33.  
  34. Function ExceptionRead(I : Integer) : Integer;
  35. Var
  36. Number : Integer;
  37. IsCorrect : Boolean;
  38. Begin
  39. Repeat
  40. IsCorrect := True;
  41. Writeln('Введите ', (I+1), ' элемент массива: ');
  42. Try
  43. Readln(Number);
  44. Except
  45. IsCorrect := False;
  46. Writeln('Неверный тип данных!');
  47. End;
  48. Until IsCorrect;
  49.  
  50. ExceptionRead := Number;
  51. End;
  52.  
  53. Procedure OutputTaskEssence();
  54. Begin
  55. Writeln('Данная программа находит максиимальное количество единиц, идущих подряд в массиве.');
  56. End;
  57.  
  58. Function PathChoice() : String;
  59. Var
  60. TextF : TextFile;
  61. Path : String;
  62. IsCorrect : Boolean;
  63.  
  64. Begin
  65. Repeat
  66. IsCorrect := True;
  67. Writeln('Введите путь файла: ');
  68. Try
  69. Readln(Path);
  70. AssignFile(TextF, Path);
  71. Reset(TextF);
  72. Except
  73. IsCorrect := False;
  74. Writeln('Неверный путь файла!');
  75. End;
  76. Until IsCorrect;
  77. Writeln('Файл успешно открыт!');
  78. PathChoice := Path;
  79. CloseFile(TextF);
  80. End;
  81.  
  82. Function SizeFromFile(Path : String; var TextF : TextFile) : Integer;
  83. Var
  84. Size : Integer;
  85. IsCorrect : Boolean;
  86.  
  87. Begin
  88. AssignFile(TextF, Path);
  89. Reset(TextF);
  90. IsCorrect := True;
  91. Writeln('Запись количества строк...');
  92. Try
  93. Readln(TextF, Size);
  94. Except
  95. IsCorrect := False;
  96. End;
  97. If ((Size < 1) Or (IsCorrect = False)) Then
  98. Begin
  99. Writeln('Ошибка! Неверный ввод размера! Впишите данные с клавиатуры.');
  100. Size := SizeFromConsole();
  101. End;
  102.  
  103. Writeln('Количество элементов массива: ', Size);
  104. CloseFile(TextF);
  105. SizeFromFile := Size;
  106.  
  107. End;
  108.  
  109. Function ArrayReadFile(Path : String; Size : Integer; var TextF : TextFile; Arr : TArray) : TArray;
  110. Var
  111. I : Integer;
  112. Line : String;
  113. IsCorrect : Boolean;
  114.  
  115. Begin
  116. AssignFile(TextF, Path);
  117. Reset(TextF);
  118. Dec(Size);
  119. IsCorrect := True;
  120. Readln(TextF, Line);
  121.  
  122. Writeln('Запись матрицы...');
  123. For I := 0 To Size Do
  124. Begin
  125. Try
  126. Read(TextF, Arr[I])
  127. Except
  128. Writeln(' Неверный ввод данных! Введите данные с клавиатуры.');
  129. Arr[I] := ExceptionRead(I);
  130. End;
  131. End;
  132. CloseFile(TextF);
  133.  
  134. ArrayReadFile := Arr;
  135.  
  136. End;
  137.  
  138. Function ArrayCout(const Arr : TArray) : Integer;
  139.  
  140. Begin
  141. //рассчеты
  142. ArrayCout := 0;
  143. End;
  144.  
  145. Procedure Output(Result : Integer);
  146. Var
  147. TextF : TextFile;
  148. Path : String;
  149. IsCorrect : Boolean;
  150.  
  151. Begin
  152. Writeln;
  153. Writeln('Максимальное количество единиц, идущих подряд: ', Result);
  154. Repeat
  155. IsCorrect := True;
  156. Writeln('Введите путь файла для вывода: ');
  157. Try
  158. Readln(Path);
  159. AssignFile(TextF, Path);
  160. Reset(TextF);
  161. Except
  162. IsCorrect := False;
  163. Writeln('Неверный путь файла!');
  164. End;
  165. Until IsCorrect;
  166. Append(TextF);
  167. Writeln(TextF);
  168. Writeln(TextF, 'Максимальное количество единиц, идущих подряд: ', Result);
  169. CloseFile(TextF);
  170. Writeln('Данные записаны в файл.');
  171. Readln;
  172.  
  173. End;
  174.  
  175. Function InputFromFile() : TArray;
  176.  
  177. Var
  178. Path : String;
  179. Size, MaxRes : Integer;
  180. TextF : TextFile;
  181. Arr : TArray;
  182.  
  183. Begin
  184. Writeln('При записи данных из файла, учтите, что на первой строке написано количество строк матрицы, а далее через пробел элементы массива');
  185. Path := PathChoice();
  186. Size := SizeFromFile(Path, TextF);
  187. SetLength(Arr, Size);
  188. Arr := ArrayReadFile(Path, Size, TextF, Arr);
  189.  
  190. InputFromFile := Arr;
  191. End;
  192.  
  193. Function ArrayReadConsole(Size : Integer; Arr : TArray) : TArray;
  194. Var
  195. IsCorrect : Boolean;
  196. I, J : Integer;
  197. Begin
  198. Dec(Size);
  199.  
  200. For I := 0 To Size Do
  201. Begin
  202. Repeat
  203. IsCorrect := True;
  204. Writeln('Введите элемент с индексом ', I+1);
  205. Try
  206. Readln(Arr[I]);
  207. Except
  208. IsCorrect := False;
  209. Writeln('Неверный тип данных');
  210. End;
  211. Until IsCorrect;
  212. End;
  213.  
  214. ArrayReadConsole := Arr;
  215. End;
  216.  
  217. Function InputFromConsole() : TArray ;
  218.  
  219. Var
  220. Size, MaxSum : Integer;
  221. Arr : TArray;
  222.  
  223. Begin
  224. Size := SizeFromConsole();
  225. SetLength(Arr, Size);
  226. Arr := ArrayReadConsole(Size, Arr);
  227.  
  228. InputFromConsole := Arr;
  229. End;
  230.  
  231. Function SourceChoice() : TArray;
  232. Var
  233. ChoiceNumber : Integer;
  234. Arr : TArray;
  235. IsCorrect : Boolean;
  236.  
  237. Begin
  238. Writeln('Выберите, откуда будут вводиться данные:');
  239. Repeat
  240. IsCorrect := True;
  241. Writeln('Введите 0, если с консоли; введите 1, если с файла.');
  242. Try
  243. Readln(ChoiceNumber);
  244. Except
  245. IsCorrect := False;
  246. End;
  247. If ((IsCorrect = False) Or ((ChoiceNumber <> 1) And (ChoiceNumber <> 0))) Then
  248. Begin
  249. Writeln('Неверный ввод данных!');
  250. IsCorrect := False;
  251. End;
  252. Until IsCorrect;
  253. If (ChoiceNumber = 0) Then
  254. Arr := InputFromConsole()
  255. Else
  256. Arr := InputFromFile();
  257.  
  258. SourceChoice := Arr;
  259.  
  260. End;
  261.  
  262. Var
  263. Arr : TArray;
  264. MaxRes : Integer;
  265.  
  266. Begin
  267. OutputTaskEssence();
  268. Arr := SourceChoice();
  269. MaxRes := ArrayCout(Arr);
  270. Output(MaxRes);
  271.  
  272. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement