Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.65 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. matr1: tNums;
  25. matr2: tNums;
  26.  
  27.  
  28. procedure InputSize(size: integer);
  29.  
  30. const
  31. minSize = 2;
  32. maxSize = 20;
  33. begin
  34. isCorrect := false;
  35. repeat
  36. Writeln('Введите размерность матрицы от ', minSize, ' до ', maxSize,':');
  37. try
  38. Readln(size);
  39. if (size > minSize - 1) and (size < maxSize + 1) then
  40. isCorrect := true
  41. else
  42. Writeln('Ошибка ввода. Введено число, удовлетворяющее условию.');
  43. except
  44. Writeln('Ошибка ввода. Введено число, удовлетворяющее условию.');
  45. end;
  46. until isCorrect;
  47. end;
  48.  
  49.  
  50. function ReadMatr1FromFile(nums1: tNums): tNums;
  51. begin
  52. AssignFile(f,'c:\Users\Богданчик\Documents\laba\matrix1.txt');
  53. Reset(f);
  54. Read(f, size);
  55. SetLength(nums1, size, size);
  56. for rows := 1 to size do
  57. begin
  58. for cols := 1 to size do
  59. begin
  60. Read(f,nums1[rows,cols]);
  61. Write(' ', nums1[rows,cols]);
  62. end;
  63. Writeln;
  64. end;
  65. Writeln('--------------------');
  66. Result := nums1;
  67. end;
  68.  
  69.  
  70. function ReadMatr2FromFile(nums2: tNums): tNums;
  71. begin
  72. AssignFile(f,'c:\Users\Богданчик\Documents\laba\matrix2.txt');
  73. Reset(f);
  74. Read(f, size);
  75. SetLength(nums2, size, size);
  76. for rows := 1 to size do
  77. begin
  78. for cols := 1 to size do
  79. begin
  80. Read(f,nums2[rows,cols]);
  81. Write(' ', nums2[rows,cols]);
  82. end;
  83. Writeln;
  84. end;
  85. Writeln('-------------------');
  86. Result := nums2;
  87. end;
  88.  
  89.  
  90. function SumOfMatrs(nums1: tNums; nums2:tNums): tNums;
  91. var
  92. size: integer;
  93. rows: integer;
  94. cols: integer;
  95. numsSum: tNums;
  96. Arr1: tNums;
  97. Arr2: tNums;
  98. begin
  99. matr1 := ReadMatr1FromFile(nums1);
  100. matr2 := ReadMatr2FromFile(nums2);
  101. Writeln('Полученная сумма матриц: ');
  102. SetLength(numsSum, size, size);
  103. for rows := 1 to size do
  104. begin
  105. for cols := 1 to size do
  106. begin
  107. numsSum[rows, cols] := nums1[rows, cols] + nums2[rows, cols];
  108. Write(' ', numsSum[rows, cols]);
  109. end;
  110. Writeln;
  111. end;
  112. Writeln('--------------------');
  113. Result := numsSum;
  114. end;
  115.  
  116.  
  117. procedure SaveMatrSumInFile(numsSum: tnums);
  118.  
  119. begin
  120. AssignFile(f,'c:\Users\Богданчик\Documents\laba\matrixSum.txt');
  121. Rewrite(f);
  122. for rows := 1 to size do
  123. for cols := 1 to size do
  124. Write(f,numsSum[rows,cols]);
  125. Writeln;
  126. Closefile(f);
  127. Writeln('Файл сохранен.');
  128. end;
  129.  
  130.  
  131. procedure Main();
  132.  
  133. begin
  134. Writeln('Данная программа складывает две треугольные матрицы, в которых только элементы над главной диагональю отличны от нуля, порядка n.');
  135. matr1 := ReadMatr1FromFile(nums1);
  136. matr2 := ReadMatr2FromFile(nums2);
  137. SumOfMatrs(nums1, nums2);
  138. SaveMatrSumInFile(numsSum);
  139. end;
  140.  
  141. begin
  142. Main();
  143. Readln;
  144. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement