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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2009, 19:41   #1
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию Подпрограмма перемножения матриц (3 матрицы)

Цитата:
Даны матрицы А(i,j,k), B(i,j,k) C(I,j,k). Написать подпрограмму перемножающая эти матрицы.
Код:
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
const n=3;
type mass=array[1..4,1..4] of integer;
 
procedure Umnosh(a1,a2,a3:mass);
var  c:mass;
     i,j,k:integer;
{begin
for i:=1 to n do
begin
for j:=1 to n do
a1[i,j]:=a1[i,j]*a2[i,j];
end;}
 
begin
 for i:=1 to n do
    for j:=1 to n do
      c[i,j]:=0;
    for k:=1 to n do
    for i:=1 to n do
    for j:=1 to n do
      c[k,i]:=C[k,i]+(a1[i,j]*a2[j,i])*a3[i,k];
   WriteLn;
     for i:=1 to n do
      WriteLn(c[i,1],' ',c[i,2],' ',c[i,3]);
end;
 
 
 
 //end;
 
var a, b,z:mass;
    i,j:integer;
 
begin
Writeln('Matrica A:');
for i := 1 to n do
for j := 1 to n do
begin
Write('a[', i, ',', j,'] : ');
Readln(a[i, j]);
end;
 
begin
Writeln('Matrica B:');
for i := 1 to n do
for j := 1 to n do
begin
Write('b[', i, ',', j,'] : ');
Readln(b[i, j]);
end;
Writeln('Matrica Z:');
for i := 1 to n do
for j := 1 to n do
begin
Write('z[', i, ',', j,'] : ');
Readln(z[i, j]);
end;
   Umnosh(a,b,z);
   WriteLn;
   ReadLn;
   end;
   end.
Помогите, как перемножить 3 матрицы (в программе).
Doublefaced вне форума Ответить с цитированием
Старый 01.07.2009, 19:46   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

вот тут смотри
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 01.07.2009, 19:48   #3
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Матрицы нужно перемножать последовательно, как и числа.
Сначала перемножить 1-ю и 2-ю матрицы. Результат умножить на 3-ю матрицу.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 01.07.2009, 19:50   #4
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию

Код:
begin
for i:=1 to n do
begin
for j:=1 to n do
a1[i,j]:=a1[i,j]*a2[i,j];
end;}
 
begin
 for i:=1 to n do
    for j:=1 to n do
      c[i,j]:=0;
    for k:=1 to n do
    for i:=1 to n do
    for j:=1 to n do
      c[k,i]:=C[k,i]+a1[i,j]*a3[i,k];
   WriteLn;
     for i:=1 to n do
      WriteLn(c[i,1],' ',c[i,2],' ',c[i,3]);
end;
Пробовал так, но считает не правильно.

Последний раз редактировалось Doublefaced; 01.07.2009 в 19:55.
Doublefaced вне форума Ответить с цитированием
Старый 01.07.2009, 19:56   #5
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

http://devels.ru/?what=art&p=106
+ смотри похожие темы внизу страницы.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 01.07.2009, 22:48   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Doublefaced я сам лично дето в этом разделе выкладывал исходник умножения матриц, правда на делфи, но это не страшно, так что попробуйте найти его.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 01.07.2009, 22:55   #7
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию

Мне и нужно (Делфи Консоль).
Как две матрицы перемножить я знаю, а вот как 3 не понимаю
Doublefaced вне форума Ответить с цитированием
Старый 01.07.2009, 23:07   #8
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

О_о перемножаете две первые, получаешь новую, перемножаете ее с третьей... надо помнить только о неассоциативности умножения матриц и о их размерности..
т. е. (AB)C != A(BC) (если конечно это не E)
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 01.07.2009, 23:15   #9
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию

Напишите пож-та я писал, но почему то не робит. Пол дня мучаюсь.
Doublefaced вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) timepoka Помощь студентам 8 01.07.2011 13:20
Подпрограмма перемножения матриц Doublefaced Помощь студентам 0 22.06.2009 11:26
Двумерные массивы,создание новой матрицы путем сортровки поочередно двух матриц. valord Паскаль, Turbo Pascal, PascalABC.NET 0 03.06.2009 20:41
подпрограмма alex1313 Паскаль, Turbo Pascal, PascalABC.NET 2 02.04.2009 21:13
Ввод векторов и матриц, умножение матрицы на вектор и вычисление скалярного призведения двух векторов zverushka Помощь студентам 18 20.02.2009 15:25