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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2012, 22:49   #1
F1nt
Пользователь
 
Регистрация: 11.09.2011
Сообщений: 41
По умолчанию Умножение двух матриц

Пордскажите как умножить матрицы, я не могу сообразить. А конкретно у меня две матрицы, одна e[6][6] а вторая e1[1][6]. Мне нужно из матрицы e1 умножить i элемент на каждый j элемент каждой строки.

Последний раз редактировалось F1nt; 23.10.2012 в 22:53.
F1nt вне форума Ответить с цитированием
Старый 23.10.2012, 23:11   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Умножение матриц
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 26.10.2012, 09:47   #3
Olzhas-KazNU
 
Регистрация: 26.10.2012
Сообщений: 4
По умолчанию

#include <iostream.h>
#include<math.h>
int main() {
double a[100][100], b[100][100], c[100][100];
int i,j,l,n;
double s(0);
cout<<"Matrix size:";
cin>>n;
cout<<endl;

cout<<"a matrix:"<<endl;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
cin>>a[i][j];
}
}

cout<<"b matrix: "<<endl;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
cin>>b[i][j];
}
}

for(i=0; i<n; i++) {
for(l=0; l<n; l++) {
s = 0;
for(j=0; j<n; j++) {
s += a[i][j]*b[j][l];
}
c[i][l] = s;
}
}

cout<<"rezult:"<<endl;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
cout<<c[i][j]<<" ";
}
cout<<endl;
}


return 0;
}
исходник на с++ пользуйся на здоровье
Olzhas-KazNU вне форума Ответить с цитированием
Старый 26.10.2012, 10:38   #4
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
Счастье

Вот еще мое решение на C++. Здесь матрица 5x5 умножается на матрицу 5x5. Это вам для понимания
Кстати, Olzhas-KazNU, ваш код содержит много ошибок.

Код:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <locale>
#include <conio.h>

using namespace std;

int main() {

setlocale(LC_ALL,"Russian");

const int MATRIX_RANGE = 5;
    
int matrix[3][MATRIX_RANGE][MATRIX_RANGE];

srand(static_cast<unsigned> (time(NULL)));

int k = 0;

while (k <= 1) {
for (int i = 0; i < MATRIX_RANGE; i++)
    for (int j = 0; j < MATRIX_RANGE; j++)
        matrix[k][i][j] = rand() % 80 + 10;
        k++;
}

for (int i = 0; i < MATRIX_RANGE; i++)
    for (int j = 0; j < MATRIX_RANGE; j++)
             matrix[2][i][j] = matrix[0][i][j] * matrix[1][i][j];

k = 0;
while (k <= 2) {
      for (int i = 0; i < MATRIX_RANGE; i++)
          for (int j = 0; j <= MATRIX_RANGE; j++)
              if (j == MATRIX_RANGE) cout << endl; else cout << matrix[k][i][j] << " ";     
cout << endl;      
k++;
}

cout << "Нажмите любую клавишу...";
_getch();
return 0;    
}
Никто

мой блог

Последний раз редактировалось three_cats; 26.10.2012 в 10:47.
three_cats вне форума Ответить с цитированием
Старый 26.10.2012, 15:12   #5
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
Счастье

Так уж и быть! Вот код, полностью удовлетворяющий условию задачи.

Код:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <locale>
#include <conio.h>

using namespace std;

int main() {

setlocale(LC_ALL,"Russian");

const int MATRIX_RANGE = 6;
    
int first_matrix[1][MATRIX_RANGE];
int second_matrix[MATRIX_RANGE][MATRIX_RANGE];
int result_matrix[MATRIX_RANGE][MATRIX_RANGE];

srand(static_cast<unsigned> (time(NULL)));

for (int i = 0; i < MATRIX_RANGE; i++)
    first_matrix[0][i] = rand() % 80 + 10;

for (int i = 0; i < MATRIX_RANGE; i++)
    for (int j = 0; j < MATRIX_RANGE; j++)
        second_matrix[i][j] = rand() % 80 + 10;    

for (int i = 0; i < MATRIX_RANGE; i++)
    for (int j = 0; j < MATRIX_RANGE; j++)
             result_matrix[i][j] = first_matrix[0][j] * second_matrix[i][j];

cout << "Первая матрица: " << endl;
for (int i = 0; i < MATRIX_RANGE; i++)
    cout << first_matrix[0][i] << " ";

cout << endl << "Вторая матрица: " << endl;
      for (int i = 0; i < MATRIX_RANGE; i++)
          for (int j = 0; j <= MATRIX_RANGE; j++)
              if (j == MATRIX_RANGE) cout << endl; else cout << second_matrix[i][j] << " ";     

cout << endl << "Результативная матрица: " << endl;
      for (int i = 0; i < MATRIX_RANGE; i++)
          for (int j = 0; j <= MATRIX_RANGE; j++)
              if (j == MATRIX_RANGE) cout << endl; else cout << result_matrix[i][j] << " ";     

cout << endl << "Нажмите любую клавишу...";
_getch();
return 0;    
}
Никто

мой блог
three_cats вне форума Ответить с цитированием
Старый 24.06.2014, 23:37   #6
Sips333
Новичок
Джуниор
 
Регистрация: 24.06.2014
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Olzhas-KazNU Посмотреть сообщение
#include <iostream.h>
#include<math.h>
int main() {
double a[100][100], b[100][100], c[100][100];
int i,j,l,n;
double s(0);
cout<<"Matrix size:";
cin>>n;
cout<<endl;

cout<<"a matrix:"<<endl;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
cin>>a[i][j];
}
}

cout<<"b matrix: "<<endl;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
cin>>b[i][j];
}
}

for(i=0; i<n; i++) {
for(l=0; l<n; l++) {
s = 0;
for(j=0; j<n; j++) {
s += a[i][j]*b[j][l];
}
c[i][l] = s;
}
}

cout<<"rezult:"<<endl;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
cout<<c[i][j]<<" ";
}
cout<<endl;
}


return 0;
}
исходник на с++ пользуйся на здоровье
Можешь зделать мне описание програмы Этой,вот скайп mykhailyshyn2,я заплачу.
Sips333 вне форума Ответить с цитированием
Старый 24.06.2014, 23:37   #7
Sips333
Новичок
Джуниор
 
Регистрация: 24.06.2014
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Olzhas-KazNU Посмотреть сообщение
#include <iostream.h>
#include<math.h>
int main() {
double a[100][100], b[100][100], c[100][100];
int i,j,l,n;
double s(0);
cout<<"Matrix size:";
cin>>n;
cout<<endl;

cout<<"a matrix:"<<endl;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
cin>>a[i][j];
}
}

cout<<"b matrix: "<<endl;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
cin>>b[i][j];
}
}

for(i=0; i<n; i++) {
for(l=0; l<n; l++) {
s = 0;
for(j=0; j<n; j++) {
s += a[i][j]*b[j][l];
}
c[i][l] = s;
}
}

cout<<"rezult:"<<endl;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
cout<<c[i][j]<<" ";
}
cout<<endl;
}


return 0;
}
исходник на с++ пользуйся на здоровье
Можешь зделать мне описание програмы Этой,вот скайп mykhailyshyn2,я заплачу.
Sips333 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Умножение матриц BDA Общие вопросы C/C++ 2 20.11.2011 01:06
Умножение двух матриц на С++ machines Visual C++ 0 16.05.2011 01:20
Умножение 2-х матриц Lifefine Общие вопросы Delphi 7 23.03.2011 09:54
Умножение матриц) Guzal Общие вопросы C/C++ 1 26.10.2010 21:56
Ввод векторов и матриц, умножение матрицы на вектор и вычисление скалярного призведения двух векторов zverushka Помощь студентам 18 20.02.2009 15:25