program maticovani;
uses crt;
const max=4; {velikost ctvercove matice}
v=11; {velikost cisel}
type matice=array[1..max,1..max] of longint;
var i,j,k,t,n:longint;
s,o,p:matice;
procedure generuj(var m:matice);
begin
for i:=1 to max do
begin
for j:=1 to max do m[i,j]:=Random(v);
end;
end;
procedure transponuj(var m:matice);
var temp:matice;
begin
temp:=m;
for i:=1 to max do
begin
for j:=1 to max do m[i,j]:=temp[j,i];
end;
end;
procedure nasob(var m1,m2,m: matice);
begin
for i:=1 to max do
begin
for j:=1 to max do
begin
for k:=1 to max do t:=t+m1[i,k]*m2[k,j];
m[i,j]:=t;
k:=1;
t:=0;
end;
end;
end;
procedure secti(var m1,m2,m: matice);
begin
for i:=1 to max do
begin
for j:=1 to max do m[i,j]:=m1[i,j]+m2[i,j];
end;
end;
begin
clrscr;
generuj(s);
writeln('Matice s');
for i:=1 to max do
begin
for j:=1 to max do write(s[i,j]:5);
writeln;
end;
writeln('N transponovana');
transponuj(s);
for i:=1 to max do
begin
for j:=1 to max do write(s[i,j]:5);
writeln;
end;
transponuj(s);
generuj(o);
writeln('Matice o');
for i:=1 to max do
begin
for j:=1 to max do write(o[i,j]:5);
writeln;
end;
nasob(s,o,p);
writeln('Matice s x o');
for i:=1 to max do
begin
for j:=1 to max do write(p[i,j]:5);
writeln;
end;
secti(s,o,p);
writeln('Matice s + o');
for i:=1 to max do
begin
for j:=1 to max do write(p[i,j]:5);
writeln;
end;
readkey;
end.