Выполнить арифметические операции над матрицами - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста с задачей! Тема:массивы. Выполнить операции (здесь A, B, C, D — квадратные матрицы порядка n) A^T+4*B-5*C^T;

Решение задачи: «Выполнить арифметические операции над матрицами»

textual
Листинг программы
const nmax=10;
var n:byte;
type matr=array[1..nmax,1..nmax] of integer;
procedure Vvod(var mt:matr);
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
mt[i,j]:=random(10);
end;
 
procedure Vyvod(mt:matr;c:string);
var i,j:byte;
begin
writeln(c,':');
for i:=1 to n do
  begin
    for j:=1 to n do
    write(mt[i,j]:4);
    writeln;
  end;
end;
procedure Trans(m:matr;var m1:matr);
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
m1[i,j]:=m[j,i];
end;
 
procedure UmnMatr(m1,m2:matr;var m:matr);
var i,j,k:byte;
begin
for k:=1 to n do
for j:=1 to n do
  begin
   m[k,j]:=0;
   for i:=1 to n do
   m[k,j]:=m[k,j]+m1[k,i]*m2[i,j];
  end;
end;
 
procedure UmnSc(m1:matr;s:integer;var m2:matr);
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
m2[i,j]:=m1[i,j]*s;
end;
 
procedure SumMatr(m1,m2:matr;var m:matr);
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
m[i,j]:=m1[i,j]+m2[i,j];
end;
 
procedure RazMatr(m1,m2:matr;var m:matr);
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
m[i,j]:=m1[i,j]-m2[i,j];
end;
 
var a,at,b,b1,ab,c,ct,c1,d:matr;
begin
randomize;
repeat
write('Размер матриц до ',nmax,' n=');
readln(n);
until n in [1..nmax];
Vvod(a);
Vvod(b);
Vvod(c);
Vyvod(a,'Matrica A');{исходная А}
Vyvod(b,'Matrica B');{исходная B}
Vyvod(c,'Matrica C');{исходная B}
Trans(a,at);{A^t}
UmnSc(b,4,b1);{4*B}
Trans(c,ct);{C^t}
UmnSc(ct,5,c1);{5*C^t}
SumMatr(at,b1,ab);{A^t+4*B}
RazMatr(ab,c1,d); {A^t+4*B-5*C^t}
Vyvod(d,'Matrica D=A^t+4*B-5*C^t');
end.

Объяснение кода листинга программы

const nmax = 10; var n: byte; type matr = array[1..nmax, 1..nmax] of integer; procedure Vvod(var mt: matr); var i, j: byte; begin for i := 1 to n do for j := 1 to n do mt[i, j] := random(10); end; procedure Vyvod(mt: matr; c: string); var i, j: byte; begin writeln(c, ':'); for i := 1 to n do for j := 1 to n do write(mt[i, j]: 4); writeln; end; procedure Trans(m: matr; var m1: matr); var i, j: byte; begin for i := 1 to n do for j := 1 to n do m1[i, j] := m[j, i]; end; procedure UmnMatr(m1, m2: matr; var m: matr); var i, j, k: byte; begin for k := 1 to n do for j := 1 to n do m[k, j] := 0; for i := 1 to n do m[k, j] := m[k, j] + m1[k, i] m2[i, j]; end; procedure UmnSc(m1: matr; s: integer; var m2: matr); var i, j: byte; begin for i := 1 to n do for j := 1 to n do m2[i, j] := m1[i, j] s; end; procedure SumMatr(m1, m2: matr; var m: matr); var i, j: byte; begin for i := 1 to n do for j := 1 to n do m[i, j] := m1[i, j] + m2[i, j]; end; procedure RazMatr(m1, m2: matr; var m: matr); var i, j: byte; begin for i := 1 to n do for j := 1 to n do m[i, j] := m1[i, j] — m2[i, j]; end; var a, at, b, b1, ab, c, c1, d: matr; begin randomize; repeat write('Размер матриц до ', nmax, ' n='); readln(n); until n in [1..nmax]; Vvod(a); Vvod(b); Vvod(c); Vyvod(a, 'Matrica A'); Vyvod(b, 'Matrica B'); Vyvod(c, 'Matrica C'); Trans(a, at); UmnSc(b, 4, b1); Trans(c, ct); UmnSc(ct, 5, c1); SumMatr(at, b1, ab); RazMatr(ab, c1, d); Vyvod(d, 'Matrica D=A^t+4B-5C^t'); end;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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