Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2008, 12:02   #1
щдуп
 
Регистрация: 16.05.2008
Сообщений: 6
По умолчанию Задача на матрицы

Заданы 2 матрици. А=1.2 5 -3 и В= 1 2 3
2.7 1 2 5.1 4 -7
-4 6.3 2 6 8 9
проверить , является ли призведение этих матриц перестановочным т.е. проверить равенство АВ=ВА. в случае положительного ответа напечатать АВ=ВА. иначе напечатать литерал Произведение неперестановочно. Вычисление произведения двух матриц оформить в виде процедуры.
щдуп вне форума Ответить с цитированием
Старый 24.06.2008, 17:42   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Ну, и в чем проблема? Перемножай матрицы и сравнивай.
Следующая процедура перемножает квадратные матрицы a и b размером [n x n] и в результате получает матрицу c такого же размера.
Код:
const
  N_MAX = 10;

type
  TMatrix = array[1..N_MAX,1..N_MAX] of real;

procedure MultiMatrix(const n: integer; const a,b: TMatrix; var c: TMatrix);
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;
_Dmitry вне форума Ответить с цитированием
Старый 24.06.2008, 17:46   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Числа в матрице проверь, а то мог неправильно списать, все съехало.
Код:
uses crt;
const n=3;
type Tmatr=array[1..n,1..n]of real;
const a:Tmatr=((1.2,5.0,-3.0),
                      (2.7,1.0, 2.0),
                      (-4.0,6.3,2.0));
         b:Tmatr=((1.0,2.0, 3.0),
                       (5.1,4.0,-7.0),
                       (6.0,8.0, 9.0));
var c,d:Tmatr;
    i,j,p:byte;

procedure UmnMatr(x,y:Tmatr;var z:Tmatr);
var k:byte;
begin
for k:=1 to n do
for j:=1 to n do
   begin
     z[k,j]:=0;
     for i:=1 to n do
        begin
          z[k,j]:=z[k,j]+x[k,i]*y[i,j];
        end;
   end;
end;
begin
clrscr;
Writeln('Proizvedenie a*b:');
UmnMatr(a,b,c);
for i:=1 to n do
  begin
    for j:=1 to n do
    write(c[i,j]:6:2);
    writeln;
  end;
writeln;
Writeln('Proizvedenie b*a:');
UmnMatr(b,a,d);
for i:=1 to n do
  begin
    for j:=1 to n do
    write(d[i,j]:6:2);
    writeln;
  end;
writeln;
p:=0;
for i:=1 to n do
for j:=1 to n do
if c[i,j]=d[i,j] then
   begin
     p:=p+1;
   end;
if p=n*n then writeln('AB=BA')
else writeln('Proizvedenie ne perestanovochno!');
readln
end.
puporev вне форума Ответить с цитированием
Старый 26.06.2008, 08:52   #4
щдуп
 
Регистрация: 16.05.2008
Сообщений: 6
Хорошо

большое всем спасибо, за то, что уделили внимание и помогли.
щдуп вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на матрицы и массивы kaliha Помощь студентам 3 17.01.2008 23:46
Задача на матрицы Integral Паскаль, Turbo Pascal, PascalABC.NET 1 12.12.2007 13:32
Задача про седловую точку матрицы (С++) Fuckin_Princess Помощь студентам 3 28.11.2007 16:39
Задача с вводом матрицы на С Aero Помощь студентам 1 28.10.2007 14:50