这样对两个矩阵进行乘法运算对吗?

时间:2019-05-06 15:51:02

标签: c++ arrays math

好吧,如果第一个矩阵有n行和m列,我一直在尝试将两个矩阵相乘 第二个矩阵有p行和q列,而我做了一个条件,其中p必须等于m才能发生此循环。

float mult (float **m1, float **m2,float **ms){

    for (int i = 0; i <n; i++)
    {
        for (int j = 0; j < q; j++)
        {
            ms[i][j]= 0;
            for (int k = 0; k < p; k++)
            {
               ms[i][j] += m1[i][k] * m2[k][j];
            }

        }
    }
    return 0 ;
}

这是我初始化数组的地方

float** matrix1 = new float*[n];
    for(int i = 0; i < n; ++i)
        matrix1[i] = new float[m];

    float** matrix3 = new float*[p];
    for(int i = 0; i < p; ++i)
        matrix3[i] = new float[q];

    float** matrixmul = new float*[n];
    for(int i = 0; i < n; ++i)
        matrixmul[i] = new float[q];

这应该将matrix1与matrix3相乘并打印matrixmul 此功能是可打印的一种功能

void showmatrixmul(float **M){
     cout <<"[" ;
    for (int i=0;i<n;i++){
    int x=0;
        for (int j=0;j<q;j++){
            x++;

            cout << M[i][j];
            if(j != q-1){
                cout<< " " ;
            }
        }
        if(i != n-1 ){

            cout << ";";

        }
     x=0;
    }

    cout << "]";
}

我作为输出得到的全部是[;;;],这意味着在放置

时,matrixmul内不能有任何元素
[15 0 12;3 6 12;6 11 7;18 17 7]
*
[2 5 12 16 2;5 12 10 19 19;12 4 4 16 1]

作为输入,而预期输出 应该是这个

[174 123 228 432 42;180 135 144 354 132;151 190 210 417 228;205 322 414 723 366]

所有输入和输出应采用相同的形式 好的,我已经上传了乘法在这里工作所需的所有代码 https://ideone.com/nnTIDl

0 个答案:

没有答案