在c ++中乘以两个矩阵

问题描述 投票:-4回答:2

我试图在c ++中乘以两个矩阵,但结果不正确! 你能告诉我我的代码有什么问题吗?!

#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
//more detail
using namespace std;
#define WIDTH1 3
#define HEIGHT1 3
#define WIDTH2 3
#define HEIGHT2 3
#define WIDTH3 3
#define HEIGHT3 3
int A[HEIGHT1][WIDTH1];
int B[HEIGHT2][WIDTH2];
int C[HEIGHT3][WIDTH3];
int n, m;
int y = 0;
//more detail :)

int main() {
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
        {
            cin >> m;
            A[i][j] = m;
        }
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
        {
            cin >> n;
            B[i][j] = n;
        }
//more detail :)

    for (int i = 0; i < 3; i++) 
    {
        int k = 0;
        int sum = 0;
        int sum2 = 0;
        int sum3 = 0;
        for (int j = 0; j < 3; j++)
        {
            int sum = A[i][j] * B[j][i];
            sum += sum; 
        }
        B[i][y] = sum;
        y = y + 1;
        for (int j = 0; j < 3; j++)
        {
            int sum2 = A[i][j] * B[j][i];
            sum2 += sum2;
        }
        B[i][y] = sum2;
        y = y + 1;
//more detail :)

        for (int j = 0; j < 3; j++)
        {
            int sum3 = A[i][j] * B[j][i];
            sum3 += sum3;
        }
        B[i][y] = sum3;
        y = y + 1;
    }
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 1; j++)
        {
            cout << B[i][j] <<"\t" << B[i][j+1] << "\t" << B[i][j+2] << "\n" ;
        }
    return 0;
//more detail :)

}
c++ matrix-multiplication
2个回答
2
投票

您如何看待这一点:

    for (int j = 0; j < 3; j++)
    {
        int sum = A[i][j] * B[j][i];
        sum += sum; 
    }

与你原来的sum有关?它没有做任何事情。

不要重新声明相同的变量。

    for (int j = 0; j < 3; j++)
    {
        sum += A[i][j] * B[j][i];
    }

0
投票

谢谢,我只是改变它,现在它显然是有效的 尝试记住我所知道的基本事物并开始再次学习C ++是基础! 这是代码

#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>

using namespace std;
#define WIDTH1 3
#define HEIGHT1 3
#define WIDTH2 3
#define HEIGHT2 3
#define WIDTH3 3
#define HEIGHT3 3
int A[HEIGHT1][WIDTH1];
int B[HEIGHT2][WIDTH2];
int C[HEIGHT3][WIDTH3];
int n, m, sum;
int y = 0;
int main() {
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
        {
            cin >> m;
            A[i][j] = m;
        }
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
        {
            cin >> n;
            B[i][j] = n;
        }
    for (int c = 0; c < 3; c++) {
        for (int d = 0; d < 3; d++) {
            for (int k = 0; k < 3; k++) {
                sum = sum + A[c][k] * B[k][d];
            }

            C[c][d] = sum;
            sum = 0;
        }
    }
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 1; j++)
        {
            cout << C[i][j] <<"\t" << C[i][j+1] << "\t" << C[i][j+2] << "\n" ;
        }
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.