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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2008, 15:33   #1
gred
Пока ещё
Форумчанин
 
Аватар для gred
 
Регистрация: 26.02.2008
Сообщений: 116
Печаль переумножить в 2 матрицы 3X3

Простая задача, но я непомню что за хрень матрицы и как их умножать (стыдно)
напичите плиз на паскале и на делфи
Я мегапрограммер потерявший память.
Если кому помог, поставте '+' я буду благодарен
gred вне форума Ответить с цитированием
Старый 25.03.2008, 18:49   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Если вглядеться в корень проблемы то судя по всему автор не знает как умножаются матрицы и что такое матрицы... ну чтож, вот ссылки разбирайтесь:
http://ru.wikipedia.org/wiki/Матрица_(математика)
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 25.03.2008, 19:05   #3
gred
Пока ещё
Форумчанин
 
Аватар для gred
 
Регистрация: 26.02.2008
Сообщений: 116
По умолчанию

Надо тупо создать 2 массива до 9 и перемножить их? Потом создать 3
Я мегапрограммер потерявший память.
Если кому помог, поставте '+' я буду благодарен
gred вне форума Ответить с цитированием
Старый 25.03.2008, 19:22   #4
gred
Пока ещё
Форумчанин
 
Аватар для gred
 
Регистрация: 26.02.2008
Сообщений: 116
По умолчанию

Код:
uses crt;
var
mas1:array[1..9] of integer;
mas2:array[1..9] of integer;
i,n,k:integer;
begin
writeln('Vv 1 matrizu');
for i:=1 to 9 do
begin
Write('mas ',i,'=');
readln(mas1[i]);
end;
writeln('Vv 2 matrizu');
for n:=1 to 9 do
begin
Write('mas ',n,'=');
readln(mas2[n]);
end;
writeln('otvet');
for i:=1 to 9 do
begin
k:=mas1[i]*mas2[2];
Writeln('mas=',k);
end;
readln;
end.
так? надо?
Я мегапрограммер потерявший память.
Если кому помог, поставте '+' я буду благодарен
gred вне форума Ответить с цитированием
Старый 25.03.2008, 19:33   #5
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Ну, вы даёте...
Здесь есть и формула и цветной рисунок, как перемножить матрицы:
http://ru.wikipedia.org/wiki/%D0%9F%...B0.D0.BC.D0.B8
_Dmitry вне форума Ответить с цитированием
Старый 25.03.2008, 23:52   #6
Шаман
Пользователь
 
Регистрация: 01.03.2008
Сообщений: 25
По умолчанию

Цитата:
Сообщение от gred Посмотреть сообщение
Простая задача, но я непомню что за хрень матрицы и как их умножать (стыдно)
напичите плиз на паскале и на делфи
У мну есть код решения вопросса, только он страшный, правда работает...

Код:
uses
crt;

var
mata,matb,pro:array [1..3,1..3] of longint;  //описываю три матрицы 3х3
i,j:integer;
begin
clrscr;
randomize;
for i:=1 to 3 do begin
  for j:=1 to 3 do
  begin
    mata[i,j]:=random(100);       //матрицы формируются рэндомом
                                              (можешь сделать вручную)
    matb[i,j]:=random(10);
    end;
    end;
  for i:=1 to 3 do begin      // здесь я вывожу первую матрицу на экран 
   for j:=1 to 3 do
    write(mata[i,j],' ');                        
    writeln;
   end;
   writeln;
  for i:=1 to 3 do begin
  for j:=1 to 3 do
   write(matb[i,j],' ');         //здесь вторую
   writeln;
    end;
  writeln('Результат');         
    for i:=1 to 3 do begin
     for j:=1 to 3 do
     begin
      pro[i,j]:=mata[i,j]*matb[i,j];        //умножение двух матриц
      write(pro[i,j],' ');                         //вывод на экран
      writeln;
      end;
      end;
   readln;
   end.
Плюс 1
Шаман вне форума Ответить с цитированием
Старый 26.03.2008, 11:03   #7
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Бред...

Результатом перемножения двух квадратных матриц a и b, размером [n x n] является матрица c, такого же размера, которая получается следующим образом:
Код:
for k:=1 to n do
  for i:=1 to n do
    for j:=1 to n do
      c[k,i]:=c[k,i]+a[k,j]*b[j,i];
Матрицу c не забудьте обнулить перед счетом.

Последний раз редактировалось _Dmitry; 26.03.2008 в 11:15.
_Dmitry вне форума Ответить с цитированием
Старый 26.03.2008, 16:32   #8
gred
Пока ещё
Форумчанин
 
Аватар для gred
 
Регистрация: 26.02.2008
Сообщений: 116
По умолчанию

Неполучается, всегда числа просто перемножаются например вводишь
5 5 5 и 5 5 5 - 25 25 25
5 5 5 - 5 5 5 = 25 25 25
5 5 5 - 5 5 5 - 25 25 25
а надо по правилу:
Я мегапрограммер потерявший память.
Если кому помог, поставте '+' я буду благодарен
gred вне форума Ответить с цитированием
Старый 26.03.2008, 17:26   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот кусок из модуля, посвященный умножению матриц n*n.
Код:
Procedure Umnogenie(n:integer;a,b:Tmatrix;var c:Tmatrix);
var k,j,i:integer;z:real;
begin
for k:=0 to n-1 do
  for j:=0 to n-1 do
  begin
  c[k,j]:=0;
    for i:=0 to n-1 do
    begin
    z:=a[i,j]*b[k,i];
    c[k,j]:=c[k,j]+z;
    end;
  end;
end;
puporev вне форума Ответить с цитированием
Старый 26.03.2008, 19:34   #10
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Сообщение от gred Посмотреть сообщение
Неполучается, всегда числа просто перемножаются например вводишь
5 5 5 и 5 5 5 - 25 25 25
5 5 5 - 5 5 5 = 25 25 25
5 5 5 - 5 5 5 - 25 25 25
Естественно, код в пост #6 не верен.
Рабочий код, см. пост #7 (индексация матриц с единицы) и пост #9 (индексация матриц с нуля).
_Dmitry вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрицы FatalX Помощь студентам 21 17.04.2009 22:50
матрицы chelsi Паскаль, Turbo Pascal, PascalABC.NET 13 25.04.2008 10:07
матрицы Ensoph Помощь студентам 1 24.10.2007 09:38