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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2009, 23:25   #1
alexz29
Пользователь
 
Аватар для alexz29
 
Регистрация: 10.12.2009
Сообщений: 28
По умолчанию умножить матрици

привет народ вот косяк, надо умножить две матрици,, я это сделал в ручную, мне нужно в цикл загнать не знаю как((((


Код:
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
//обьявляем два  трехмерных массива A и В
int masA[3][3],masB[3][3],masK[3][3];
int i,j;
//обьявляем массивы для произведений
int masC[3][3],masD[3][3];
int k,l,n,m,p,mask;
/*----------------------------------------------------------------------------*/
cout<<"\n"<<"MATRIX_A"<<"\n";
//ЗАДАЕМ массив masA[3][3]
for (i=0;i<3;i++)
 {
//заполняем массив 
    for(j=0;j<3;j++) {
    masA[i][j]=(i*3)+j+1;//массыв залолняется по порядку начиная с 1
//выводм его на экран
    cout<<masA[i][j]<<" ";
    }
cout<<"\n";
}
/*----------------------------------------------------------------------------*/
cout<<"\n"<<"MATRIX_B"<<"\n";

//ЗАДАЕМ массив masB[3][3]
for (i=0;i<3;i++)
 {
//заполняем массив 
    for(j=0;j<3;j++) {
    masB[i][j]=i+j;//массив заполняется по этой формуле
//выводм его на экран
    cout<<masB[i][j]<<" ";
    }
cout<<"\n";
}
/*----------------------------------------------------------------------------*/
// вот сдесь я пытался но что то не получается((((
cout<<"\n"<<"A*B"<<"\n\n";
//ЗАДАЕМ массив masC[3][3]
for (i=0;i<3;i++){
   for(j=0;j<3;j++){
   for (p=0;p<3;p++){
      masC[i][j]=masA[i][p]*masB[p][j];
      
      }
      cout<<masC[i][j]<<" ";
    }
    
cout<<"\n";
}
/*----------------------------------------------------------------------------*/
cout<<"\n"<<"B*A"<<"\n\n";

//ЗАДАЕМ массив masD[3][3]
for (n=0;n<3;n++)
 {
//заполняем массив 
    for(m=0;m<3;m++) {
//Умножаем матрицу B*A
masD[0][0]=masB[0][0]*masA[0][0]+masB[0][1]*masA[1][0]+masB[0][2]*masA[2][0];
masD[1][0]=masB[1][0]*masA[0][0]+masB[1][1]*masA[1][0]+masB[1][2]*masA[2][0];
masD[2][0]=masB[2][0]*masA[0][0]+masB[2][1]*masA[1][0]+masB[2][2]*masA[2][0];

masD[0][1]=masB[0][0]*masA[0][1]+masB[0][1]*masA[1][1]+masB[0][2]*masA[2][1];
masD[1][1]=masB[1][0]*masA[0][0]+masB[1][1]*masA[1][0]+masB[1][2]*masA[2][0];
masD[2][1]=masB[2][0]*masA[0][1]+masB[2][1]*masA[1][1]+masB[2][2]*masA[2][1];

masD[0][2]=masB[0][0]*masA[0][0]+masB[0][1]*masA[1][0]+masB[0][2]*masA[2][0];
masD[1][2]=masB[1][0]*masA[0][0]+masB[1][1]*masA[1][0]+masB[1][2]*masA[2][0];
masD[2][2]=masB[2][0]*masA[0][2]+masB[2][1]*masA[1][2]+masB[2][2]*masA[2][2];
    cout<<masD[n][m]<<" ";
    }
cout<<"\n";
}
getch();
}
alexz29 вне форума Ответить с цитированием
Старый 11.12.2009, 13:18   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Ну где-то так. (почистете, что лишнее)
Код:
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
//обьявляем два  трехмерных массива A и В
int masA[3][3],masB[3][3],masK[3][3];
int i,j;
//обьявляем массивы для произведений
int masC[3][3],masD[3][3];
int k,l,n,m,p,mask;
/*----------------------------------------------------------------------------*/
cout<<"\n"<<"MATRIX_A"<<"\n";
//ЗАДАЕМ массив masA[3][3]
for (i=0;i<3;i++)
 {
//заполняем массив
    for(j=0;j<3;j++) {
    masA[i][j]=(i*3)+j+1;//массыв залолняется по порядку начиная с 1
//выводм его на экран
    cout<<masA[i][j]<<" ";
    }
cout<<"\n";
}
/*----------------------------------------------------------------------------*/
cout<<"\n"<<"MATRIX_B"<<"\n";

//ЗАДАЕМ массив masB[3][3]
for (i=0;i<3;i++)
 {
//заполняем массив 
    for(j=0;j<3;j++) {
    masB[i][j]=i+j;//массив заполняется по этой формуле
//выводм его на экран
    cout<<masB[i][j]<<" ";
    }
cout<<"\n";
}
/*----------------------------------------------------------------------------*/
/* вот сдесь я пытался но что то не получается((((
Согласно теории С[i][j]=сумме от 1 до количества столбцов второй матрицы (p)
 произведения элементов i-той строки матрицы А на элементы j -го столбца
 матрицы В
i - в нашем случае это строка,
j -столбец
 и Произведение A*B != B*A в общем случае
*/
cout<<"\n"<<"A*B"<<"\n\n";
//ЗАДАЕМ массив masC[3][3]
for (i=0;i<3;i++){

   for(j=0;j<3;j++){
     {
      masC[i][j]=0;
     for (p=0;p<3;p++){
      masC[i][j]+=masA[i][p]*masB[p][j];
     }
      }
      cout<<masC[i][j]<<" ";
    }

cout<<"\n";
}
/*----------------------------------------------------------------------------*/
cout<<"\n"<<"B*A"<<"\n\n";

//ЗАДАЕМ массив masD[3][3]
/*for (n=0;n<3;n++)
 {
//заполняем массив 
    for(m=0;m<3;m++) {
//Умножаем матрицу B*A
masD[0][0]=masB[0][0]*masA[0][0]+masB[0][1]*masA[1][0]+masB[0][2]*masA[2][0];
masD[0][1]=masB[0][0]*masA[0][1]+masB[0][1]*masA[1][1]+masB[0][2]*masA[2][1];
masD[0][2]=masB[0][0]*masA[0][2]+masB[0][1]*masA[1][2]+masB[0][2]*masA[2][2];

masD[1][0]=masB[1][0]*masA[0][0]+masB[1][1]*masA[1][0]+masB[1][2]*masA[2][0];
masD[1][1]=masB[1][0]*masA[0][1]+masB[1][1]*masA[1][1]+masB[1][2]*masA[2][1];
masD[1][2]=masB[1][0]*masA[0][2]+masB[1][1]*masA[1][2]+masB[1][2]*masA[2][2];

masD[2][0]=masB[2][0]*masA[0][0]+masB[2][1]*masA[1][0]+masB[2][2]*masA[2][0];
masD[2][1]=masB[2][0]*masA[0][1]+masB[2][1]*masA[1][1]+masB[2][2]*masA[2][1];
masD[2][2]=masB[2][0]*masA[0][2]+masB[2][1]*masA[1][2]+masB[2][2]*masA[2][2];
    cout<<masD[n][m]<<" ";
    }
    cout<<"\n";
}

/*----------------------------------------------------------------------------*/
// вот сдесь я пытался но что то не получается((((
//cout<<"\n"<<"A*B"<<"\n\n";
//ЗАДАЕМ массив masC[3][3]
for (i=0;i<3;i++){

   for(j=0;j<3;j++){
     {
      masC[i][j]=0;
     for (p=0;p<3;p++){
      masC[i][j]+=masB[i][p]*masA[p][j];
     }
      }
      cout<<masC[i][j]<<" ";
    }

cout<<"\n";
}
//*--------------------------------------------



getch();
}
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
умножить столбик Betty Microsoft Office Excel 10 27.07.2009 19:10
Умножить и разделить числа Pavelok Общие вопросы Delphi 5 19.05.2009 21:04
матрици Forro Паскаль, Turbo Pascal, PascalABC.NET 5 14.04.2008 20:31
умножить число на элементы матрицы KORT Помощь студентам 2 04.11.2007 02:06