Найти произведение двух двумерных массивов - Pascal ABC
Формулировка задачи:
Найти произведение двух двумерных массивов А и В, если массив А имеет размерность NxM, а В-MxN. Укажите размерность результирующего массива и правило нахождения элемента с индексами i и j.
Решение задачи: «Найти произведение двух двумерных массивов»
textual
Листинг программы
uses crt;
const nmax=20;
type mas=array[1..nmax,1..nmax] of integer;
procedure Vvod(var a:mas;x,y:byte;c:char);
var i,j:byte;
begin
writeln('Матрица ',c);
for i:=1 to x do
begin
for j:=1 to y do
begin
a[i,j]:=random(10)+1;
write(a[i,j]:3);
end;
writeln;
end;
writeln;
end;
procedure Umn(a,b:mas;x,y:byte;var c:mas);
var i,j,p:byte;
begin
for p:=1 to x do
for j:=1 to x do
begin
c[p,j]:=0;
for i:=1 to y do
begin
c[p,j]:=c[p,j]+a[p,i]*b[i,j];
end;
end;
writeln('Матрица C=A*B:');
for i:=1 to x do
begin
for j:=1 to x do
write(c[i,j]:6);
writeln;
end;
end;
var a,b,c:mas;
n,m:byte;
begin
randomize;
repeat
write('Количество строк матрицы А до ',nmax,' n=');
readln(n);
until n in [1..nmax];
repeat
write('Количество столбцов матрицы А до ',nmax,' m=');
readln(m);
until m in [1..nmax];
Vvod(a,n,m,'A');
Vvod(b,m,n,'B');
Umn(a,b,n,m,c);
end.
Объяснение кода листинга программы
- Объявлены константы и переменные:
- nmax - максимальное значение размера матрицы (20);
- mas - тип массива для двумерной матрицы (array[1..nmax,1..nmax] of integer);
- a, b, c - переменные типа mas;
- n, m - переменные для количества строк и столбцов матрицы соответственно.
- В функции Vvod() происходит ввод данных для матрицы A, B или C. Выводится заполненная матрица.
- В функции Umn() происходит умножение матрицы A на матрицу B и результат записывается в матрицу C. Затем выводится результат умножения.
- В основной части программы происходит запрос на ввод количества строк и столбцов матрицы A и B. Затем вызывается функция Vvod() для ввода матрицы A, B и C.
- После ввода матриц A и B вызывается функция Umn() для умножения матриц и выводится результат в матрице C.
- Программа завершается после вывода результата.