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; 
      --ka : integer; 
      kb : integer; 
       
   begin 
      for i in res'range(1loop 
         for j in res'range(2loop 
             
            tmp := 0
            kb := b'first(1); 
            for ka in a'range(2loop 
               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(1loop 
         for j in m'range(2loop 
            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