С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
#1

Умножение двух матриц, ответ записывается в третью матрицу - C++

20.01.2013, 00:49. Просмотров 1739. Ответов 19
Метки нет (Все метки)

Реализовать алгоритм умножения двух матриц, заданных пользователем. Результат умножения записывается в третью матрицу.
http://ru.wikipedia.org/wiki/%D0%A3%...80%D0%B8%D1%86 тут описание как их умножать, не могу разобраться(
матрица должна быть двумерной, язык С++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2013, 00:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Умножение двух матриц, ответ записывается в третью матрицу (C++):

Из двух квадратных матриц создать третью, перемножив элементы первых двух согласно условию - C++
Для двух квадратных матриц нужно создать третюю матрицу, элементы которой которой должны равняться произведению элементов соответствующей...

Из двух матриц сформировать третью - C++
Даны две прямоугольные целочисленные матрицы А и В одинакового размера m x п. Создать матрицу того же размера, в которой элементы равны 1,...

Умножение двух матриц - C++
Посмотрите, рабоает ли программа, которая должна умножить две матрицы. Буду очень благодарен за исправление... У меня ошибка где-то у...

Умножение двух матриц - C++
Помогите пожалуйста

Умножение двух матриц на С++ - C++
Всем доброе время суток! с днём Математиков ВАС, коллеги) Мне надо реализовать умножение 2 матриц размерности NxM1, M1xN...

Умножение двух матриц - C++
Помогите написать перемножение двух матриц без создание третьей матрицы. Что-то написал, но не то очевидно... matrix*...

19
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.01.2013, 01:20 #2
В этой теме я приводил пример, как это сделать на С++.
1
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
20.01.2013, 01:27  [ТС] #3
спасибо, но я там не могу разобратся,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
SetConsoleOutputCP(1251);
const int Y = 3, X = 4;
int a[Y][X] = {0};
 
cout << "Запоните мaссив:\n";
for(int i = 0; i < Y; i++)
{
for(int j = 0; j < X; j++)
{
cout << "a[" << i << "][" << j << "] = ";
cin >> a[i][j];
}
}
cout << "Результат:\n";
for(int i = 0; i < Y; i++)
{
 
cout << i << ":\t"; 
 
for(int j = 0; j < X; j++)
{
cout << a[j][i] << "\t";
 
}
}
}
мне нужно сюда както вставить решение..
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.01.2013, 01:48 #4
А где вторая матрица? Да и третья матрица под результат?
1
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
20.01.2013, 02:31  [ТС] #5
блин протупил, не то взял, тут только одна матрица

Добавлено через 39 минут
кто может помочь?
пожалусто, не как не могу разобратся
0
SeaMonster
15 / 15 / 0
Регистрация: 31.12.2012
Сообщений: 101
20.01.2013, 02:51 #6
Очень примитивный, но вроде работающий пример перемножения квадратных матриц. Только что написал и проверил по примеру перемножения матриц отсюда http://lekprim.ru/fundifu/diffuru9.htm

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<stdio.h>
#include<math.h>
#include<conio.h>
 
int main(){
 const int n=2;
 double A[n][n],B[n][n],C[n][n];
 int i,j,r;
for(i=0;i<n;i++) {for(j=0;j<n;j++){A[i][j]=0;B[i][j]=0;}} ///Заполняем исходные матрицы нулями
 
////A[0][0]=2;A[1][1]=2;B[0][0]=0.5;B[1][1]=0.5; ///Вводим кое-какие значения. По идее перемножение такого должно дать единичную матрицу
A[0][0]=1;A[0][1]=2;
A[1][0]=3;A[1][1]=4;
B[0][0]=5;B[0][1]=6;
B[1][0]=7;B[1][1]=8;
 
 
for(i=0;i<n;i++) {for(j=0;j<n;j++){int rez=0; for(r=0;r<n;r++){rez+=A[i][r]*B[r][j];}C[i][j]=rez;}}
printf("\n\n Matrix A:");
for(i=0;i<n;i++){printf("\n");for(j=0;j<n;j++){
   printf("\t %.2f",A[i][j]);
 }
}
 
printf("\n\n Matrix B:");
for(i=0;i<n;i++){printf("\n");for(j=0;j<n;j++){
   printf("\t %.2f",B[i][j]);
 }
}
 
printf("\n\n Matrix C:");
for(i=0;i<n;i++){printf("\n");for(j=0;j<n;j++){
   printf("\t %.2f",C[i][j]);
 }
}
 
getch();
}
1
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
20.01.2013, 03:18  [ТС] #7
а можешь по проще сделать, а то я так ещё не учил
0
SeaMonster
15 / 15 / 0
Регистрация: 31.12.2012
Сообщений: 101
20.01.2013, 03:25 #8
? Что из этого сложно? вроде и так использую только самые простые возможности. Короче - выдели, что именно тут сложно и если сумею, то завтра напишу проще.
1
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
20.01.2013, 03:36  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
SetConsoleOutputCP(1251);
const int Y = 3, X = 4;
int a[Y][X] = {0};
 
cout << "Запоните мaссив:\n";
for(int i = 0; i < Y; i++)
{
for(int j = 0; j < X; j++)
{
cout << "a[" << i << "][" << j << "] = ";
cin >> a[i][j];
}
}
cout << "Результат:\n";
for(int i = 0; i < Y; i++)
{
 
cout << i << ":\t"; 
 
for(int j = 0; j < X; j++)
{
cout << a[j][i] << "\t";
 
}
}
}
я такого вида учил
0
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
20.01.2013, 12:22 #10
вот тебе пример с квадратными матрицами
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Умножение квадратных матриц.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{ //размер матриц
    const int N=3;
    //индексные переменные
    int i,j,k;
    //первая матрица
    double A[N][N];
    //вторая матрица
    double B[N][N];
    //Третья матрица
    double C[N][N];
    //Ввод (построчный) первой матрицы
    cout<<"Matrix A: \n";
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            cin>>A[i][j];
    //Ввод (построчный) 2 матрицы
    cout<<"Matrix B: \n";
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            cin>>B[i][j];
    //Вычисление произведений матриц
    cout<<"Matrix C=AB: \n";
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            C[i][j]=0;
    for(k=0;k<N;k++)
        C[i][j]+=A[i][k]*B[k][j];
    //Вывод значения
    cout<<C[i][j]<<" ";
        }
        cout<<endl;
    }
    getch();
 
}
0
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
20.01.2013, 12:45  [ТС] #11
Цитата Сообщение от Евгений89 Посмотреть сообщение
вот тебе пример с квадратными матрицами
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Умножение квадратных матриц.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{ //размер матриц
    const int N=3;
    //индексные переменные
    int i,j,k;
    //первая матрица
    double A[N][N];
    //вторая матрица
    double B[N][N];
    //Третья матрица
    double C[N][N];
    //Ввод (построчный) первой матрицы
    cout<<"Matrix A: \n";
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            cin>>A[i][j];
    //Ввод (построчный) 2 матрицы
    cout<<"Matrix B: \n";
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            cin>>B[i][j];
    //Вычисление произведений матриц
    cout<<"Matrix C=AB: \n";
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            C[i][j]=0;
    for(k=0;k<N;k++)
        C[i][j]+=A[i][k]*B[k][j];
    //Вывод значения
    cout<<C[i][j]<<" ";
        }
        cout<<endl;
    }
    getch();
 
}
тут ошибка(
0
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
20.01.2013, 14:02 #12
в каком месте.Что за ошибка. У меня все норм рпботает.Кидай сюда ошибку
0
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
20.01.2013, 14:41  [ТС] #13
не подчеркнуто не где, а когда комптлирую, пишит что ошибка
0
MickeyBlueEyes
Студент
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
20.01.2013, 14:44 #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "stdafx.h"
#include <iostream>
using namespace std;
 
void main(int argc, char ** argv){
 
    const int S = 2;
 
    double M1[S][S], M2[S][S], M3[S][S];
 
    cout << " * M1 *" << endl << endl;
 
    for(int i = 0; i < S; i++){
        for(int k = 0; k < S; k++){
            cout << "M1[" << i << "][" << k << "] = ";
            cin >> M1[i][k];
        }
    }
 
    cout << endl << " * M2 *" << endl << endl;
    for(int i = 0; i < S; i++){
        for(int k = 0; k < S; k++){
            cout << "M2[" << i << "][" << k << "] = ";
            cin >> M2[i][k];
        }
    }
 
    cout << endl << " * Result *" << endl << endl;
    cout << "[";
    
    for(int i = 0; i < S; i++){
        
        if(i > 0) cout << " ";
        
        for(int k = 0; k < S; k++){
            
            M3[i][k] = M1[i][k] * M2[i][k];
 
            if((S - 1) == k && (S - 1) == i)
                cout << M3[i][k] << "]";
            else
                cout << M3[i][k] << ", ";
 
        }
        cout << endl;
    }
    
    getchar();
    
    getchar();
}
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.01.2013, 15:03 #15
Цитата Сообщение от Евгений89 Посмотреть сообщение
в каком месте.Что за ошибка. У меня все норм рпботает.Кидай сюда ошибку
Хрустальный шар показывает, что у ТС компилятор не от Microsoft, поэтому "stdafx.h" у него отсутствует. Отсюда и ошибка компиляции.

Добавлено через 2 минуты
Цитата Сообщение от VlaDdislav Посмотреть сообщение
а можешь по проще сделать, а то я так ещё не учил
Дружище, проще уже только на счетах считать. А как ты учил умножать?

Цитата Сообщение от SeaMonster Посмотреть сообщение
? Что из этого сложно? вроде и так использую только самые простые возможности. Короче - выдели, что именно тут сложно и если сумею, то завтра напишу проще.
Это такой способ выяснить, насколько просто написано, не вникая в то, что именно написано.

Добавлено через 2 минуты
SeaMonster, старайтесь не писать много операторов в одну строку. Сильно ухудшает читаемость.
C++
1
2
3
4
5
6
7
8
9
10
  
  for (i = 0; i < n; ++i) {
    for (j = 0; j < n; ++j) {
      int rez=0;
      for(r=0;r<n;r++) {
        rez+=A[i][r]*B[r][j];
      }
      C[i][j]=rez;
    }
  }
0
20.01.2013, 15:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2013, 15:03
Привет! Вот еще темы с ответами:

Умножение двух матриц 1000х1000 - C++
Ребят помогите пожалуйста. Надо умножить две матрицы 1000*1000. Обьявил их как int а мне пишет что они слишком большие.

Сформировать третью матрицу, являющуюся суммой двух других - C++
Написать программу и составить блок-схему: Заданы две матрицы целых чисел. Сформировать третью матрицу, являющуюся суммой двух других

Исправить ошибку (умножение двух матриц) - C++
#include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; void main() { SetConsoleOutputCP(1251); const int s = 2; int...

Написать программу, которая выполняет умножение двух матриц - C++
Написать программу, которая выполняет умножение двух матриц (матрицы не квадратные).


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.