Умножение двух матриц - Pascal ABC
Формулировка задачи:
Создать модуль, содержащий процедуры или функции:
− умножение двух матриц;
− вычисление следа матрицы;
− меняет местами две строки матрицы.
Написать программу, демонстрирующую работу созданного модуля.
Помогите пожалуйста!
Решение задачи: «Умножение двух матриц»
textual
Листинг программы
unit mod_1; //Г*Г*çâГ*Г*ГЁГҐ ìîäóëÿ interface const nmax=20; //Г¬Г*ГЄГ± Г°Г*çìåð Г¬Г*òðèö var n:integer; //ðåГ*ëüГ*ûé Г°Г*çìåð Г¬Г*òðèö, Г®Г* îäèГ*Г*êîâûé, ГІ.ГЄ. ГіГ¬Г*îæГ*ГҐГ¬ type mtr=array[1..nmax,1..nmax] of integer;//ГІГЁГЇ Г¬Г*òðèö procedure vvod(var a:mtr); procedure vyvod(a:mtr;k:integer;s:string); procedure umn(a,b:mtr;var c:mtr); function sled(a:mtr):integer; procedure obmen(var a:mtr); implementation procedure vvod(var a:mtr);//ââîä ýëåìåГ*òîâ Г¬Г*òðèö var i,j:integer; begin for i:=1 to n do for j:=1 to n do a[i,j]:=random(20); end; procedure vyvod(a:mtr;k:integer;s:string);//âûâîä Г¬Г*òðèö Г*Г* ГЅГЄГ°Г*Г*, //k-êîëè÷åñòâî ïîçèöèé ïîä Г·ГЁГ±Г«Г* var i,j:integer; begin writeln(s); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:k); writeln end; end; procedure umn(a,b:mtr;var c:mtr); //ГіГ¬Г*îæåГ*ГЁГҐ 2Гµ ГЄГўГ*äðГ*ГІГ*ûõ Г¬Г*òðèö var i,j,k:integer; begin for i:=1 to n do for j:=1 to n do begin c[i,j]:=0; for k:=1 to n do c[i,j]:=c[i,j]+a[i,k]*b[k,j]; end; end; function sled(a:mtr):integer; //âû÷èñëåГ*ГІГҐ ñëåäГ*(ñóììГ* ГЈГ«Г*ГўГ*îé äèГ*ГЈГ®Г*Г*ëè) var i,s:integer; begin s:=0; for i:=1 to n do s:=s+a[i,i]; sled:=s end; procedure obmen(var a:mtr); //îáìåГ* ñòðîê var i1,i2,j,x:integer; begin repeat writeln('Ââåäèòå Г*îìåðГ* äâóõ ñòðîê äëÿ îáìåГ*Г*'); read(i1,i2); until(i1 in [1..n])and(i2 in [1..n])and(i1<>i2); for j:=1 to n do begin x:=a[i1,j]; a[i1,j]:=a[i2,j]; a[i2,j]:=x end end; end.