Умножение двух матриц - 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.

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы