Форум программистов, компьютерный форум CyberForum.ru

Умножение матриц - C++

Восстановить пароль Регистрация
 
stepan a
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 9
11.02.2013, 07:37     Умножение матриц #1
не могу разобраться с умножением трех матриц, написал программу считает не правильно ошибку найти не могу уже мозг кипит
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
void main(void)
{// Определение переменных
    int c[1][3],d[2][3],e[1][3],i,j,f,l,m1,n1,p1;
    int a[3][1] = {{1},{1},{1}};
    int b[2][3] = {{ 1, 2, 0},{ 0, 1, 2}};
    m1 = 3;
    n1 = 2;
   p1 = 1;
    printf("Matrica A: \n");
    for (i=0;i<m1;i++)
    {
        for(j=0;j<p1;j++)
            cout<<setw(p1)<<a[i][j];
            cout<<endl;
    }
     // Транспонирование матрицы A
    for (i=0;i<m1;i++)
    {
        for(j=0;j<p1;j++)
            {e[j][i]=a[i][j];}
    }
 
    // Вывод матрицы A транспонированной на экран
    printf("Matrica A(T): \n");
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<e[i][j];
        cout<<endl;
    }
        // Вывод матрицы B на экран
    printf("Matrica B: \n");
    for (i=0;i<n1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<b[i][j];
        cout<<endl;
    }
 
    // Транспонирование матрицы В
    for (i=0;i<n1;i++)
    {
        for(j=0;j<m1;j++)
            {d[j][i]=b[i][j];}
    }
 
    // Вывод матрицы B транспонированной на экран
    printf("Matrica B(T): \n");
    for (i=0;i<m1;i++)
    {
        for(j=0;j<n1;j++)
        cout<<setw(n1)<<d[i][j];
        cout<<endl;
    }
 
    // умножение матриц
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        {
            c[i][j]=e[j][i]*d[j][i]*b[i][j];
        }
    }
 
    // Вывод матрицы C на экран
        printf("Matrica C: \n");
 
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<c[i][j]<<" ";
        cout<<endl;
    }
 
    getch();
}
Добавлено через 23 часа 7 минут
все нашел ошибку все работает

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
void main(void)
{// Определение переменных
    int c[1][3],d[3][2],e[1][3],i,j,l,k,m1,n1,p1;
    int a[3][1] = {{1},{1},{1}};
    int b[2][3] = {{ 1, 2, 0},{ 0, 1, 2}};
    m1 = 3;
    n1 = 2;
   p1 = 1;
    printf("Matrica A: \n");
    for (i=0;i<m1;i++)
    {
        for(j=0;j<p1;j++)
            cout<<setw(p1)<<a[i][j];
            cout<<endl;
    }
     // Транспонирование матрицы A
    for (i=0;i<m1;i++)
    {
        for(j=0;j<p1;j++)
            {e[j][i]=a[i][j];}
    }
 
    // Вывод матрицы A транспонированной на экран
    printf("Matrica A(T): \n");
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<e[i][j];
        cout<<endl;
    }
        // Вывод матрицы B на экран
    printf("Matrica B: \n");
    for (i=0;i<n1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<b[i][j];
        cout<<endl;
    }
 
    // Транспонирование матрицы В
    for (i=0;i<n1;i++)
    {
        for(j=0;j<m1;j++)
            {d[j][i]=b[i][j];}
    }
 
    // Вывод матрицы B транспонированной на экран
    printf("Matrica B(T): \n");
    for (i=0;i<m1;i++)
    {
        for(j=0;j<n1;j++)
        cout<<setw(n1)<<d[i][j];
        cout<<endl;
    }
   // Умножение матриц
 
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        {
          c[i][j]=0;
            for ( k=0;k<m1;k++)
                    for ( l=0;l<n1;l++)
            {
            c[i][j]+=e[i][k]*d[k][l]*b[l][j];
      }
    }
 }
    // Вывод матрицы C на экран
        printf("Matrica C: \n");
 
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<c[i][j]<<" ";
        cout<<endl;
    }
 
    getch();
 
}
    
}
[/QUOTE]
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2013, 07:37     Умножение матриц
Посмотрите здесь:

Умножение матриц C++
Умножение матриц C++
Умножение матриц C++
C++ Умножение треугольных матриц«Методы обработки разреженных матриц»
Умножение матриц C++
C++ умножение матриц C++
Умножение матриц C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 09:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru