Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.89 KB | None | 0 0
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. {$R *.res}
  6.  
  7. uses
  8. System.SysUtils;
  9.  
  10. type
  11. tNums = array of array of integer;
  12. tInput = (ChooseKeyboard, ChooseFile);
  13.  
  14. var
  15. size: integer;
  16. cols: integer;
  17. rows: integer;
  18. nums1: tnums;
  19. nums2: tnums;
  20. numsSum: tnums;
  21. isCorrect: boolean;
  22. input: tInput;
  23. f: textfile;
  24.  
  25.  
  26. procedure InputSize(size: integer);
  27.  
  28. const
  29. minSize = 2;
  30. maxSize = 20;
  31. begin
  32. isCorrect := false;
  33. repeat
  34. Writeln('Введите размерность матрицы от ', minSize, ' до ', maxSize,':');
  35. try
  36. Readln(size);
  37. if (size > minSize - 1) and (size < maxSize + 1) then
  38. isCorrect := true
  39. else
  40. Writeln('Ошибка ввода. Введено число, удовлетворяющее условию.');
  41. except
  42. Writeln('Ошибка ввода. Введено число, удовлетворяющее условию.');
  43. end;
  44. until isCorrect;
  45. end;
  46.  
  47.  
  48. procedure InputMatr1(nums1: Tnums);
  49. begin
  50. InputSize(size);
  51. SetLength(nums1, size, size);
  52.  
  53. for cols := 0 to size - 1 do
  54. begin
  55. for rows := 0 to size - 1 do
  56. begin
  57. Read(nums1[rows, cols])
  58. end;
  59. writeln;
  60. end;
  61. end;
  62.  
  63.  
  64. procedure InputMatr2(nums2: Tnums);
  65. begin
  66. SetLength(nums2, size, size);
  67. for rows := 0 to size - 1 do
  68. begin
  69. for cols := rows to size - 1 do
  70. begin
  71. Writeln('Введите элемент матрицы [', rows + 1, ', ', cols + 1, ']: ');
  72. Read(nums2[rows, cols]);
  73. end;
  74. end;
  75. for rows := 1 to size - 1 do
  76. for cols := 0 to rows - 1 do
  77. nums2[rows, cols] := 0;
  78. end;
  79.  
  80.  
  81. function ReadMatr1FromFile(nums1: tNums): tNums;
  82. begin
  83. AssignFile(f,'c:\Users\Богданчик\Documents\laba\matrix1.txt');
  84. Reset(f);
  85. Read(f, size);
  86. SetLength(nums1, size, size);
  87. for rows := 1 to size do
  88. begin
  89. for cols := 1 to size do
  90. begin
  91. Read(f,nums1[rows,cols]);
  92. Write(' ', nums1[rows,cols]);
  93. end;
  94. Writeln;
  95. end;
  96. Writeln('--------------------');
  97. Result := nums1;
  98. end;
  99.  
  100.  
  101. function ReadMatr2FromFile(nums2: tNums): tNums;
  102. begin
  103. AssignFile(f,'c:\Users\Богданчик\Documents\laba\matrix2.txt');
  104. Reset(f);
  105. Read(f, size);
  106. SetLength(nums2, size, size);
  107. for rows := 1 to size do
  108. begin
  109. for cols := 1 to size do
  110. begin
  111. Read(f,nums2[rows,cols]);
  112. Write(' ', nums2[rows,cols]);
  113. end;
  114. Writeln;
  115. end;
  116. Writeln('-------------------');
  117. Result := nums2;
  118. end;
  119.  
  120.  
  121. function SumOfMatrs(numsSum: tNums): tNums;
  122. var
  123. size: integer;
  124. nums1: tNums;
  125. nums2: tNums;
  126. begin
  127. SetLength(numsSum, size, size);
  128. for rows := 1 to size do
  129. begin
  130. for cols := 0 to size - 1 do
  131. begin
  132. numsSum[rows, cols] := nums1[rows, cols] + nums2[rows, cols];
  133. end;
  134. end;
  135. for rows := 1 to size do
  136. begin
  137. for cols := 1 to size do
  138. begin
  139. Write(' ', numsSum[rows,cols]);
  140. end;
  141. Writeln;
  142. end;
  143. Writeln('--------------------');
  144. Result := numsSum;
  145. end;
  146.  
  147.  
  148. procedure SaveMatrSumInFile(numsSum: tnums);
  149.  
  150. var
  151. rows, cols:integer;
  152. f: textfile;
  153.  
  154. begin
  155. AssignFile(f,'Файл.txt');
  156. Rewrite(f);
  157. for rows := 0 to size - 1 do
  158. begin
  159. for cols := 0 to size - 1 do
  160. begin
  161. Write(f,numsSum[rows,cols]:6);
  162. end;
  163. Writeln(f);
  164. end;
  165. Closefile(f);
  166. end;
  167.  
  168.  
  169. procedure Main();
  170. var
  171. Symbol: Char;
  172. Input: TInput;
  173. IsCorrect: Boolean;
  174. begin
  175. Writeln('Данная программа ...');
  176. repeat
  177. WriteLn('Если желаете заполнять массив с клавиатуры, введите K, ' + #10#13 + 'если желаете считать массив из файла, введите F:');
  178. ReadLn(Symbol);
  179. Symbol := UpCase(Symbol);
  180. if (Symbol <> 'K') and (Symbol <> 'F') then
  181. Writeln('Внимание, при вводе произошла ошибка. Пожалуйста, повторите попытку.');
  182. until Symbol in ['K', 'F'];
  183. if Symbol = 'K' then
  184. begin
  185. InputMatr1(nums1);
  186. InputMatr2(nums2);
  187. end;
  188. if Symbol = 'F' then
  189. begin
  190. ReadMatr1FromFile(nums1);
  191. ReadMatr2FromFile(nums2);
  192. end;
  193. SumOfMatrs(numsSum);
  194. SaveMatrSumInFile(numsSum);
  195. end;
  196.  
  197. begin
  198. Main();
  199. Readln;
  200. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement