uses crt;
const nmax=10;
type matr=array[1..nmax,1..nmax] of integer;
procedure Umn(a,b:matr;ma,na,nb:byte;var c:matr);
var i,j,p:byte;
begin
for p:=1 to ma do
for j:=1 to nb do
begin
c[p,j]:=0;
for i:=1 to na do
c[p,j]:=c[p,j]+a[p,i]*b[i,j];
end;
writeln('Матрица C=A*B:');
for i:=1 to ma do
begin
for j:=1 to nb do
write(c[i,j]:4);
writeln;
end;
end;
var a,b,c:matr;
m,n,k,q,i,j,p:integer;
begin
clrscr;
repeat
write('Количество строк первой матрицы до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов первой матрицы до ',nmax,' n=');
readln

;
until n in [1..nmax];
repeat
write('Количество строк второй матрицы до ',nmax,' k=');
readln(k);
if k<>n then writeln('Количество строк должно быть равно количеству столбцов первой матрицы');
until (k=n);
repeat
write('Количество столбцов второй матрицы до ',nmax,' q=');
readln(q);
until q in [1..nmax];
writeln('Матрица А:');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(10);
write(a[i,j]:3);
end;
writeln;
end;
writeln('Матрица В:');
for i:=1 to k do
begin
for j:=1 to q do
begin
b[i,j]:=random(10);
write(b[i,j]:3);
end;
writeln;
end;
Umn(a,b,m,n,q,c);
readln
end.