Составьте программу в паскале по теме двумерные массивы. Задача: Даны две матрицы А(nxn)...

0 голосов
118 просмотров

Составьте программу в паскале по теме двумерные массивы.
Задача: Даны две матрицы А(nxn) и С(nxn).Написать программу вычисления матрицы С^Т(А+А) где С^Т транспонируемая матрица.Помогите пожалуйста.


Информатика (32 баллов) | 118 просмотров
0

Матрица A заполняется в начале программы, после матрица С заполняется элементами из A умноженными на 2, после происходит транспонация С. Я верно понял?

0

То есть надо вычислить C^T * (A+A)=C^T * 2A?

Дан 1 ответ
0 голосов
Правильный ответ

Var a:array of array of integer;
c:array of array of integer;
ma:array of array of integer;
i,j,n:integer;
begin;
randomize;
readln(n);
setlength(a,n+1); //задаём размерность динамических массивов
setlength(c,n+1);
setlength(ma,n+1);
for i:=1 to n do
begin;
setlength(a[i],n+1);
setlength(c[i],n+1);
setlength(ma[i],n+1);
end;

writeln('Matrix A:');   //генерируем массив псеводслучайных чисел
for i:=1 to n do begin;
 writeln;
  for j:=1 to n do
   begin;
    a[i,j]:=random(10);
    write(a[i,j]:4);
   end;
 end;
writeln;

writeln('Matrix C:'); //аналогично
for i:=1 to n do
 begin;
 writeln;
  for j:=1 to n do
   begin;
    c[i,j]:=random(10);
    write(c[i,j]:4);
   end;
 end;

for i:=1 to n do     //сохраняем матрицу C для транспонации
  for j:=1 to n do
    ma[i,j]:=c[i,j];
    writeln;

writeln('Transpose matrix C:'); //транспонируем C
for i:=1 to n do
 begin;
  writeln;
   for j:=1 to n do
    begin;
     c[i,j]:=ma[j,i];
     write(c[i,j]:4);
    end;
 end;

writeln;
writeln('Final matrix:'); // получаем финальную матрицу
for i:=1 to n do
 begin;
  writeln;
   for j:=1 to n do
    begin;
     ma[i,j]:=2*c[i,j]*a[i,j];
{по свойству дистрибутивности матриц С(A+A)=C*A+C*A=2*C*A}
     write(ma[i,j]:4);
    end;
 end;
end.

(38.6k баллов)
0

В конце вот чуть-чуть не поняла, почему там финальная уже матрица ma(i j)=2*c(i j)*a(i j), и потом там по свойству дистрибутивности С(А+А)=С*А+СА="*С*А