with ada.text_io;
use ada.text_io;
procedure matrixszorzas is
type matrix is array(integer range <>, integer range <>) of integer;
function "*"(a : matrix; b : matrix) return matrix is
res : matrix(a'range(1),b'range(2));
tmp : integer;
kb : integer;
begin
for i in res'range(1) loop
for j in res'range(2) loop
tmp := 0;
kb := b'first(1);
for ka in a'range(2) loop
tmp := tmp + a(i,ka) * b(kb,j);
kb := integer'succ(kb);
end loop;
res(i,j) := tmp;
end loop;
end loop;
return res;
end "*";
procedure put_matrix(m : matrix) is
begin
for i in m'range(1) loop
for j in m'range(2) loop
put(integer'image(m(i,j)) & " ");
end loop;
new_line;
end loop;
end;
x : matrix(1..3,1..5) := ( (1,0,0,0,0), (0,2,0,0,0), (0,0,1,0,1) );
y : matrix(3..7,3..5) := ( (2,2,2), (3,3,3), (4,4,4), (5,5,5), (6,6,6) );
z : matrix := x * y;
begin
put_matrix(z);
end matrixszorzas;
VISSZA