with text_io, integertbeolvas; use text_io; package body MATRIXOK is function "+" ( a, b: MATRIX ) return MATRIX is c: MATRIX(a'range(1),a'range(2)); begin for i in c'range(1) loop for j in c'range(2) loop c(i,j) := a(i,j) + b(i-a'first(1)+b'first(1),j-a'first(2)+b'first(2)); end loop; end loop; return c; end "+"; function "*" ( a, b: MATRIX ) return MATRIX is c: MATRIX(a'range(1),b'range(2)) := (others=>(others=>0.0)); begin for i in c'range(1) loop for j in c'range(2) loop for k in a'range(2) loop c(i,j) := c(i,j) + a(i,k) * b(k-a'first(2)+b'first(1),j); end loop; end loop; end loop; return c; end "*"; -- nagyon csunya kod, de van benne exit meg return utasitas :-) procedure Kiir ( m: in MATRIX; i, j: in INDEX ) is begin for k in m'range(1) loop if k>i then exit; end if; -- kiugras ciklusbol for l in m'range(2) loop if k=i and then l>j then return; -- kiugras elj-bol end if; Put(INTEGER'IMAGE(INTEGER(m(k,l)))); Put(ascii.ht); -- tabulator karakter end loop; New_Line; end loop; end Kiir; procedure Kiir ( m: in MATRIX ) is begin Kiir(m,m'last(1),m'last(2)); end Kiir; procedure Beolvas ( m: out MATRIX ) is tmpm: MATRIX(m'range(1),m'range(2)); begin for i in tmpm'range(1) loop for j in tmpm'range(2) loop New_Line(25); if j > tmpm'first(2) then Kiir(tmpm,i,j-1); elsif i > tmpm'first(1) then Kiir(tmpm,i-1,tmpm'last(2)); end if; tmpm(i,j) := ERTEK(IntegertBeolvas); end loop; end loop; m := tmpm; end Beolvas; function Beolvas ( str: STRING := "" ) return MATRIX is m,n: INDEX := INDEX(IntegertBeolvas); matr: MATRIX(INDEX'FIRST..INDEX'FIRST+m-1,INDEX'FIRST..INDEX'FIRST+n-1); begin Put_Line(str); Beolvas(matr); return matr; end Beolvas; end MATRIXOK;