Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project1;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- System.SysUtils;
- type
- tNums = array of array of integer;
- tInput = (ChooseKeyboard, ChooseFile);
- var
- size: integer;
- cols: integer;
- rows: integer;
- nums1: tnums;
- nums2: tnums;
- numsSum: tnums;
- isCorrect: boolean;
- input: tInput;
- f: textfile;
- procedure InputSize(size: integer);
- const
- minSize = 2;
- maxSize = 20;
- begin
- isCorrect := false;
- repeat
- Writeln('Введите размерность матрицы от ', minSize, ' до ', maxSize,':');
- try
- Readln(size);
- if (size > minSize - 1) and (size < maxSize + 1) then
- isCorrect := true
- else
- Writeln('Ошибка ввода. Введено число, удовлетворяющее условию.');
- except
- Writeln('Ошибка ввода. Введено число, удовлетворяющее условию.');
- end;
- until isCorrect;
- end;
- procedure InputMatr1(nums1: Tnums);
- begin
- InputSize(size);
- SetLength(nums1, size, size);
- for cols := 0 to size - 1 do
- begin
- for rows := 0 to size - 1 do
- begin
- Read(nums1[rows, cols])
- end;
- writeln;
- end;
- end;
- procedure InputMatr2(nums2: Tnums);
- begin
- SetLength(nums2, size, size);
- for rows := 0 to size - 1 do
- begin
- for cols := rows to size - 1 do
- begin
- Writeln('Введите элемент матрицы [', rows + 1, ', ', cols + 1, ']: ');
- Read(nums2[rows, cols]);
- end;
- end;
- for rows := 1 to size - 1 do
- for cols := 0 to rows - 1 do
- nums2[rows, cols] := 0;
- end;
- function ReadMatr1FromFile(nums1: tNums): tNums;
- begin
- AssignFile(f,'c:\Users\Богданчик\Documents\laba\matrix1.txt');
- Reset(f);
- Read(f, size);
- SetLength(nums1, size, size);
- for rows := 1 to size do
- begin
- for cols := 1 to size do
- begin
- Read(f,nums1[rows,cols]);
- Write(' ', nums1[rows,cols]);
- end;
- Writeln;
- end;
- Writeln('--------------------');
- Result := nums1;
- end;
- function ReadMatr2FromFile(nums2: tNums): tNums;
- begin
- AssignFile(f,'c:\Users\Богданчик\Documents\laba\matrix2.txt');
- Reset(f);
- Read(f, size);
- SetLength(nums2, size, size);
- for rows := 1 to size do
- begin
- for cols := 1 to size do
- begin
- Read(f,nums2[rows,cols]);
- Write(' ', nums2[rows,cols]);
- end;
- Writeln;
- end;
- Writeln('-------------------');
- Result := nums2;
- end;
- function SumOfMatrs(numsSum: tNums): tNums;
- var
- size: integer;
- nums1: tNums;
- nums2: tNums;
- begin
- SetLength(numsSum, size, size);
- for rows := 1 to size do
- begin
- for cols := 0 to size - 1 do
- begin
- numsSum[rows, cols] := nums1[rows, cols] + nums2[rows, cols];
- end;
- end;
- for rows := 1 to size do
- begin
- for cols := 1 to size do
- begin
- Write(' ', numsSum[rows,cols]);
- end;
- Writeln;
- end;
- Writeln('--------------------');
- Result := numsSum;
- end;
- procedure SaveMatrSumInFile(numsSum: tnums);
- var
- rows, cols:integer;
- f: textfile;
- begin
- AssignFile(f,'Файл.txt');
- Rewrite(f);
- for rows := 0 to size - 1 do
- begin
- for cols := 0 to size - 1 do
- begin
- Write(f,numsSum[rows,cols]:6);
- end;
- Writeln(f);
- end;
- Closefile(f);
- end;
- procedure Main();
- var
- Symbol: Char;
- Input: TInput;
- IsCorrect: Boolean;
- begin
- Writeln('Данная программа ...');
- repeat
- WriteLn('Если желаете заполнять массив с клавиатуры, введите K, ' + #10#13 + 'если желаете считать массив из файла, введите F:');
- ReadLn(Symbol);
- Symbol := UpCase(Symbol);
- if (Symbol <> 'K') and (Symbol <> 'F') then
- Writeln('Внимание, при вводе произошла ошибка. Пожалуйста, повторите попытку.');
- until Symbol in ['K', 'F'];
- if Symbol = 'K' then
- begin
- InputMatr1(nums1);
- InputMatr2(nums2);
- end;
- if Symbol = 'F' then
- begin
- ReadMatr1FromFile(nums1);
- ReadMatr2FromFile(nums2);
- end;
- SumOfMatrs(numsSum);
- SaveMatrSumInFile(numsSum);
- end;
- begin
- Main();
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement