-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path211012_matrices.pas
More file actions
82 lines (67 loc) · 1.88 KB
/
Copy path211012_matrices.pas
File metadata and controls
82 lines (67 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
program Hello;
type IntArray = array of array of Integer;
procedure sum(const A,B: IntArray;const n:integer; var C: IntArray);
var i,j:integer;
begin
setLength(C, n, n);
for i:=0 to n-1 do
for j:=0 to n-1 do
C[i][j]:=A[i][j]+B[i][j];
end;
procedure sub(const A,B: IntArray;const n:integer; var C: IntArray);
var i,j:integer;
begin
setLength(C, n, n);
for i:=0 to n-1 do
for j:=0 to n-1 do
C[i][j]:=A[i][j]-B[i][j];
end;
procedure mul(const A,B: IntArray;const n:integer; var C: IntArray);
var i,j,k:integer;
begin
setLength(C, n, n);
for i := 0 to n-1 do
for j := 0 to n-1 do begin
C[i][j] := 0;
for k := 0 to n-1 do
C[i][j] := C[i][j] + A[i][k] * B[k][j];
end;
end;
var n,i,j:integer;
A,B,C,D,TMP,E:IntArray;
begin
writeln ('n=');
readln(n);
// Задаём размерности матриц n x n
setLength(A, n, n);
setLength(B, n, n);
setLength(C, n, n);
writeln ('Vvedite n*n elementov matrici A:');
for i:=0 to n-1 do
for j:=0 to n-1 do
read(A[i][j]);
writeln ('Vvedite n*n elementov matrici B:');
for i:=0 to n-1 do
for j:=0 to n-1 do
read(B[i][j]);
writeln ('Vvedite n*n elementov matrici C:');
for i:=0 to n-1 do
for j:=0 to n-1 do
read(C[i][j]);
// Единичная матрица
setLength(E, n, n);
// Заполняем единичную матрицу размера n. Остальные элементы равны 0
for i:=0 to n-1 do
E[i][i]:=1;
// A * A + (E - B * C)
mul(A,A,n,D);
mul(B,C,n,TMP);
sub(E,TMP,n,TMP);
sum(D,TMP,n,D);
writeln ('result matrix D=A*A-B*C+E:');
for i:=0 to n-1 do begin
for j:=0 to n-1 do
write(D[i][j],' ');
writeln;
end;
end.