// PascalABC.NET 3.1, сборка 1219 от 16.04.2016 type Matrix=array[,] of integer;
procedure MatPrint(a:Matrix; w:integer); begin for var i:=0 to Length(a,0)-1 do begin for var j:=0 to Length(a,1)-1 do Write(a[i,j]:w); Writeln end end;
procedure MatProd(a,b,c:Matrix); begin for var i:=0 to Length(a,0)-1 do for var j:=0 to Length(b,1)-1 do begin var s:=0; for var k:=0 to Length(a,1)-1 do s+=a[i,k]*b[k,j]; c[i,j]:=s end end;
begin var a,b,c:Matrix; var m,n,p:integer; Write('Число строк матрицы А: '); Read(n); Write('Число столбцов матрицы А и строк матрицы В: '); Read(m); Write('Число столбцов матрицы В: '); Read(p); a:=MatrixRandom(n,m,-50,50); Writeln('Матрица А'); MatPrint(a,4); b:=MatrixRandom(m,p,-50,50); Writeln('Матрица B'); MatPrint(b,4); SetLength(c,n,p); Writeln('Матрица C'); MatProd(a,b,c); MatPrint(c,7) end.
type
Matrix=array[,] of integer;
procedure MatPrint(a:Matrix; w:integer);
begin
for var i:=0 to Length(a,0)-1 do begin
for var j:=0 to Length(a,1)-1 do Write(a[i,j]:w);
Writeln
end
end;
procedure MatProd(a,b,c:Matrix);
begin
for var i:=0 to Length(a,0)-1 do
for var j:=0 to Length(b,1)-1 do begin
var s:=0;
for var k:=0 to Length(a,1)-1 do s+=a[i,k]*b[k,j];
c[i,j]:=s
end
end;
begin
var a,b,c:Matrix;
var m,n,p:integer;
Write('Число строк матрицы А: '); Read(n);
Write('Число столбцов матрицы А и строк матрицы В: '); Read(m);
Write('Число столбцов матрицы В: '); Read(p);
a:=MatrixRandom(n,m,-50,50);
Writeln('Матрица А'); MatPrint(a,4);
b:=MatrixRandom(m,p,-50,50);
Writeln('Матрица B'); MatPrint(b,4);
SetLength(c,n,p);
Writeln('Матрица C');
MatProd(a,b,c);
MatPrint(c,7)
end.
Тестовое решение:
Число строк матрицы А: 4
Число столбцов матрицы А и строк матрицы В: 8
Число столбцов матрицы В: 7
Матрица А
33 -30 20 7 1 5 10 -47
-6 -1 -22 6 -33 41 4 -1
-10 -45 -16 6 -13 9 1 37
5 37 15 -48 42 -19 1 26
Матрица B
-19 42 -14 -36 38 -18 -41
-24 -20 26 -50 -36 -5 -32
-1 5 -43 15 11 49 0
-44 -35 -27 20 33 -49 14
40 7 -38 -37 48 2 -26
-24 5 -11 12 -43 47 -42
-24 11 8 -13 -9 -13 -12
-41 46 -24 20 3 -25 -25
Матрица C
1372 -179 -1176 -295 2387 1475 524
-2463 -580 1701 1697 -3622 575 -525
-1255 1857 -989 3806 353 -1214 957
2160 2631 -460 -4040 341 1340 -3017
n = 10;
var
i, c: integer;
a, w: array[1..n] of integer;
begin
randomize;
writeln('Исходный массив:');
for i := 1 to n do
begin
a[i] := random(201) - 100;
write(a[i], ' ');
end;
writeln;
c := 0;
for i := 1 to n do
if a[i] > 0 then
begin
c := c + 1;
w[c] := a[i];
end;
writeln('Кол-во положительных элементов: ', c);
for i := 1 to n do
begin
if a[i] <= 0 then
begin
c := c + 1;
w[c] := a[i];
end;
end;
writeln('Результат:');
for i := 1 to c do
write(w[i], ' ');
end.