{**********************************************************************} { Moodul Maatriks sisaldab maatriksite sisestuse, v„ljastuse, kahe } { maatriksi liitmise ja korrutamise protseduure. } { N.Vendt, R.Sune } {**********************************************************************} unit Maatriks; interface const n=10; type maat=array [1..n,1..n] of integer; var aridu,bridu,aveerge,bveerge:byte; a,b:maat; procedure SisMaat; procedure ValjaMaat; procedure MaatSum; procedure MaatKorru; implementation procedure SisMaat; var i,j:byte; begin writeln('Sisesta esimese maatriksi(a) ridade ja veergude arvud (max. 10).'); write('Ridade arv:');readln(aridu); write('Veergude arv:');readln(aveerge); for i:= 1 to aridu do for j:=1 to aveerge do begin write('a[',i,',',j,']='); readln(a[i,j]); end; writeln('Sisesta teise maatriksi(a) ridade ja veergude arvud (max. 10).'); write('Ridade arv:');readln(bridu); write('Veergude arv:');readln(bveerge); for i:= 1 to bridu do for j:=1 to bveerge do begin write('b[',i,',',j,']='); readln(b[i,j]); end; end; procedure ValjaMaat; var i,j:byte; begin writeln('Maatriks A:');writeln; for i:=1 to aridu do begin for j:=1 to aveerge do write(a[i,j]:8); writeln; end; writeln; writeln('Maatriks B:');writeln; for i:=1 to bridu do begin for j:=1 to bveerge do write(b[i,j]:8); writeln; end; writeln; end; procedure MaatSum; var aridu,aveerge,i,j:byte; c:maat; begin if (aridu<>bridu) or (aveerge<>bveerge) then begin writeln('Neid maatrikseid ei saa liita !'); writeln('Vastavalt definitsioonile saab liita ainult selliseid'); writeln('maatrikseid, millede j„rgud on v“rdsed.'); end else begin writeln('Summa maatriks:'); for i:=1 to aridu do begin for j:=1 to aveerge do begin c[i,j]:=a[i,j]+b[i,j]; write(c[i,j]:8); end; writeln; end; end; writeln; end; procedure MaatKorru; var i,j,k:byte; c:maat; begin if (aveerge<>bridu) then begin writeln('Neid maatrikseid ei saa korrutada (a*b), sest esimese '); writeln('maatriksi veergude arv ei v“rdu teise maatriksi ridade'); writeln('arvuga.'); end else begin writeln('Korrutise maatriks:'); for i:=1 to aridu do begin for j:=1 to bveerge do begin c[i,j]:=0; for k:=1 to aveerge do c[i,j]:=c[i,j]+a[i,k]*b[k,j]; write(c[i,j]:8); end; writeln; end; end; end; end.