Advertisement
dxvmxnd

Untitled

Oct 26th, 2023
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.97 KB | None | 0 0
  1. Program L2_3_D;
  2.  
  3. Uses
  4. System.SysUtils;
  5.  
  6. Type
  7. TMyArray = Array of Array of Integer;
  8.  
  9. Var
  10. LengthI, LengthJ, JSize, ISize, I, J, MaxSum : Integer;
  11. Matrix : TMyArray;
  12. IsCorrect : Boolean;
  13. Choice : String;
  14.  
  15.  
  16.  
  17. Function MatrixCout(const Arr : TMyArray; JSize, ISize : Integer) : Integer;
  18.  
  19. Var
  20. Sum : Integer;
  21. Begin
  22. Sum := 0;
  23. MaxSum := 0;
  24. Dec(ISize);
  25. Dec(JSize);
  26. For I := 0 To ISize Do
  27. Begin
  28. For J := 0 To JSize Do
  29. Begin
  30. Sum := Sum + Abs(Arr[I][J]);
  31. End;
  32. If (Sum > MaxSum) Then
  33. MaxSum := Sum;
  34. Sum := 0;
  35. End;
  36. MatrixCout := MaxSum;
  37.  
  38. End;
  39.  
  40. Procedure FromConsole;
  41.  
  42. Begin
  43. Repeat
  44. IsCorrect := True;
  45. Writeln('Введите количество строк в матрице');
  46. Try
  47. Readln(ISize);
  48. Except
  49. IsCorrect := False;
  50. Writeln('Неверный тип данных');
  51. End;
  52. If (ISize < 1) Then
  53. Begin
  54. IsCorrect := False;
  55. Writeln('Неверный тип данных');
  56. End;
  57. Until IsCorrect;
  58.  
  59. Repeat
  60. IsCorrect := True;
  61. Writeln('Введите количество столбцов в матрице');
  62. Try
  63. Readln(JSize);
  64. Except
  65. IsCorrect := False;
  66. Writeln('Неверный тип данных');
  67. End;
  68. If (JSize < 1) Then
  69. Begin
  70. IsCorrect := False;
  71. Writeln('Неверный тип данных');
  72. End;
  73. Until IsCorrect;
  74.  
  75. SetLength(Matrix, ISize, JSize);
  76. LengthI := ISize - 1;
  77. LengthJ := JSize - 1;
  78.  
  79. For I := 0 To LengthI Do
  80. Begin
  81. For J := 0 To LengthJ Do
  82. Begin
  83. Repeat
  84. IsCorrect := True;
  85. Writeln('Введите элемент с индексом ', I+1,',', J+1);
  86. Try
  87. Readln(Matrix[I][J]);
  88. Except
  89. IsCorrect := False;
  90. Writeln('Неверный тип данных');
  91. End;
  92. Until IsCorrect;
  93. End;
  94. End;
  95.  
  96. Writeln('Вывод матрицы: ');
  97. For I := 0 To LengthI Do
  98. Begin
  99. For J := 0 To LengthJ Do
  100. Begin
  101. Write(Matrix[I][J], ' ');
  102. End;
  103. Writeln;
  104. End;
  105.  
  106. MaxSum := MatrixCout(Matrix, JSize, ISize);
  107. Writeln('Максимальная сумма модулей элементов в строке: ', MaxSum);
  108. End;
  109.  
  110. Procedure FromFile;
  111.  
  112. Var
  113. TFile : TextFile;
  114.  
  115. Begin
  116. Writeln('При записи данных из файла, учтите, что на первой строке написано количество строк матрицы, на второй - количество столбцов, а далее с новой строки прописывается сама матрица.');
  117.  
  118. AssignFile(TFile, 'C:\Users\Рустамчик\Desktop\ЛАБА 2\Дельфи\3\input.txt');
  119. Reset(TFile);
  120. IsCorrect := True;
  121. Writeln('Запись размера матрицы...');
  122. Try
  123. Readln(TFile, ISize);
  124. Except
  125. IsCorrect := False;
  126. End;
  127. If (ISize < 1) Then
  128. Begin
  129. IsCorrect := False;
  130. Writeln('Ошибка! Неверный ввод размера! Измените входные данные в input.txt, затем перезапустите программу.');
  131. End;
  132. Writeln('Количество строк: ', ISize);
  133.  
  134. IsCorrect := True;
  135. Try
  136. Readln(TFile, JSize);
  137. Except
  138. IsCorrect := False;
  139. End;
  140. If (JSize < 1) Then
  141. Begin
  142. IsCorrect := False;
  143. Writeln('Ошибка! Неверный ввод размера! Измените входные данные в input.txt, затем перезапустите программу.');
  144. End;
  145. Writeln('Количество столбцов: ', JSize);
  146.  
  147. LengthI := Isize - 1;
  148. LengthJ := Jsize - 1;
  149. SetLength(Matrix, ISize, JSize);
  150.  
  151. Writeln('Введенная матрица: ');
  152.  
  153. For I := 0 To LengthI Do
  154. Begin
  155. For J := 0 To LengthJ Do
  156. Begin
  157. Try
  158. Read(TFile, Matrix[I][J])
  159. Except
  160. IsCorrect := False;
  161. Writeln(' Неверный ввод данных! Исправьте пункт ', I+1, ' ', J+1, ' пункт!');
  162. End;
  163. Write(Matrix[I][J], ' ');
  164. End;
  165. Writeln;
  166. End;
  167.  
  168. MaxSum := MatrixCout(Matrix, JSize, ISize);
  169. Append(TFile);
  170. Writeln(TFile, 'Максимальная сумма модулей элементов в строке: ', MaxSum);
  171. Writeln('Максимальная сумма модулей элементов в строке: ', MaxSum);
  172. Writeln('Данные записаны в файл.');
  173.  
  174. CloseFile(TFile);
  175.  
  176. End;
  177.  
  178.  
  179.  
  180. Begin
  181. Writeln('Данная программа находит наибольшую сумму элементов строк матрицы.');
  182. Writeln('Выберите, откуда будут вводиться данные:');
  183.  
  184. Repeat
  185. IsCorrect := True;
  186. Writeln('Напишите ONE, если с консоли. Напишите TWO, если с файла.');
  187. Try
  188. Readln(Choice);
  189. Except
  190. IsCorrect := False;
  191. Writeln('Неверный тип данных!');
  192. End;
  193. If ((Choice <> 'ONE') And (Choice <> 'TWO')) Then
  194. Begin
  195. IsCorrect := False;
  196. Writeln('Неверный тип данных!');
  197. End;
  198. Until IsCorrect;
  199.  
  200. If Choice = 'ONE' Then
  201. FromConsole
  202. Else
  203. FromFile;
  204.  
  205. Readln;
  206. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement