Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 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. function ReadMatr1FromFile(nums1: tNums): tNums;
  49. begin
  50. AssignFile(f,'c:\Users\Богданчик\Documents\laba\matrix1.txt');
  51. Reset(f);
  52. Read(f, size);
  53. SetLength(nums1, size, size);
  54. for rows := 1 to size do
  55. begin
  56. for cols := 1 to size do
  57. begin
  58. Read(f,nums1[rows,cols]);
  59. Write(' ', nums1[rows,cols]);
  60. end;
  61. Writeln;
  62. end;
  63. Writeln('--------------------');
  64. Result := nums1;
  65. end;
  66.  
  67.  
  68. function ReadMatr2FromFile(nums2: tNums): tNums;
  69. begin
  70. AssignFile(f,'c:\Users\Богданчик\Documents\laba\matrix2.txt');
  71. Reset(f);
  72. Read(f, size);
  73. SetLength(nums2, size, size);
  74. for rows := 1 to size do
  75. begin
  76. for cols := 1 to size do
  77. begin
  78. Read(f,nums2[rows,cols]);
  79. Write(' ', nums2[rows,cols]);
  80. end;
  81. Writeln;
  82. end;
  83. Writeln('-------------------');
  84. Result := nums2;
  85. end;
  86.  
  87.  
  88. function SumOfMatrs(numsSum: tNums): tNums;
  89. var
  90. size: integer;
  91. nums1: tNums;
  92. nums2: tNums;
  93. begin
  94. SetLength(numsSum, size, size);
  95. for rows := 1 to size do
  96. for cols := 0 to size - 1 do
  97. numsSum[rows, cols] := nums1[rows, cols] + nums2[rows, cols];
  98. Write(' ', numsSum[rows,cols]);
  99. Writeln('--------------------');
  100. Result := numsSum;
  101. end;
  102.  
  103.  
  104. procedure SaveMatrSumInFile(numsSum: tnums);
  105.  
  106. begin
  107. AssignFile(f,'c:\Users\Богданчик\Documents\laba\matrixSum.txt');
  108. Rewrite(f);
  109. for rows := 1 to size do
  110. for cols := 1 to size do
  111. Write(f,numsSum[rows,cols]);
  112. Writeln;
  113. Closefile(f);
  114. Writeln('Файл сохранен.');
  115. end;
  116.  
  117.  
  118. procedure Main();
  119.  
  120. var
  121. Symbol: Char;
  122. Input: TInput;
  123. IsCorrect: Boolean;
  124.  
  125. begin
  126. Writeln('Данная программа складывает две треугольные матрицы, в которых только элементы над главной диагональю отличны от нуля, порядка n.');
  127. ReadMatr1FromFile(nums1);
  128. ReadMatr2FromFile(nums2);
  129. SumOfMatrs(numsSum);
  130. SaveMatrSumInFile(numsSum);
  131. end;
  132.  
  133. begin
  134. Main();
  135. Readln;
  136. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement