uses crt;
const nmax=20;
var n:byte;
type Tmatr=array[1..nmax,1..nmax] of integer;
procedure Vvod(var mt:Tmatr;c:string);
var i,j:byte;
begin
writeln('Введите ',n*n,' элементов матрицы ',c);
for i:=1 to n do
for j:=1 to n do
begin
write('el[',i,',',j,']=');
readln(mt[i,j]);
end;
clrscr;
end;
procedure Vyvod(var mt:Tmatr;c:string);
var i,j:byte;
begin
writeln(c,':');
for i:=1 to n do
begin
for j:=1 to n do
write(mt[i,j]:5);
writeln;
end;
writeln;
end;
procedure UmnMatr(m1,m2:Tmatr;var m:Tmatr);
var i,j,k:byte;
begin
for k:=1 to n do
for j:=1 to n do
begin
m[k,j]:=0;
for i:=1 to n do
m[k,j]:=m[k,j]+m1[k,i]*m2[i,j];
end;
end;
procedure SumMatr(m1,m2:Tmatr;var m:Tmatr);
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
m[i,j]:=m1[i,j]+m2[i,j];
end;
procedure RazMatr(m1,m2:Tmatr;var m:Tmatr);
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
m[i,j]:=m1[i,j]-m2[i,j];
end;
var a,b,c:Tmatr;
w:char;
begin
clrscr;
randomize;
write('Введите размер матриц n=');
readln(n);
Vvod(a,'A');
Vvod(b,'B');
Vyvod(a,'Matrica A');
Vyvod(b,'Matrica B');
write('Press Enter...');
readln;
repeat
clrscr;
Vyvod(a,'Matrica A');
Vyvod(b,'Matrica B');
writeln('Выберите действие');
writeln('1-сложение');
writeln('2-вычитание');
writeln('3-умножениe');
writeln('другое-выход');
write('w=');readln(w);
case w of
'1':begin
SumMatr(a,b,c);
Vyvod(c,'Матрица C=A+B');
write('Press Enter...');
readln
end;
'2':begin
RazMatr(a,b,c);
Vyvod(c,'Матрица C=A-B');
write('Press Enter...');
readln
end;
'3':begin
UmnMatr(a,b,c);
Vyvod(c,'Матрица C=A*B');
write('Press Enter...');
readln
end;
else exit;
end;
until not(w in ['1'..'3']);
end.