Advertisement
Guest User

2_3

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