在C ++中将矩阵与另一个矩阵相乘

时间:2017-03-31 15:20:44

标签: c++ math multidimensional-array multiplying

我的作业有问题,我有三个矩阵。我应该先将第一个(a)乘以第二个(b),将结果返回第三个(c)。还值得一说的是我只能按指针移动,我不能在循环中使用索引。

主要问题是dim1 == dim且矩阵不是方形的情况。所有都应该用C ++编写。我的代码返回几乎很好的结果,但它看起来像在第一行我传递垃圾值。看起来我不会用价值填充这些。我很感激任何帮助。感谢

void multiply(int* a[], int* b[], int* c[], int dim1, int dim2, int
        dim3){

    for(int i = 0; i < dim1; i++){
        for(int j = 0; j < dim3; j++){
            for( int k = 0; k < dim2; k++){
                *(*(c+i)+j) += *(*(a+i)+k) * *(*(b+k)+j);
            }
        }
    }

    for(int i = 0; i < dim1; i++){
        for(int j = 0; j < dim3; j++){
            cout << *(*(c+i)+j) << "\t";
        }
        cout << endl;
    }
}

int main(){ 
    const int dim1 = 3;
    const int dim2 = 2;
    const int dim3 = 3;


    int a[dim1][dim2] = {{1,2},{3,4},{5,6}};
    int b[dim2][dim3] = {{1,2,3},{4,5,6}};
    int c[dim1][dim3] = {};

    int *tab1 [dim1];
    int *tab2 [dim2];
    int *tab3 [dim3];


    for(int i = 0; i < dim1; i++){
        *(tab1+i) = *(a+i);
        *(tab2+i) = *(b+i);
        *(tab3+i) = *(c+i); 
    }

    multiply(tab1,tab2,tab3,dim1,dim2,dim3);
}                                                                        

1 个答案:

答案 0 :(得分:0)

/opt/lampp/htdocs/PHP/Practice/PHP Functions/Login Validation/ 初始化外,一切正常。您是tab的迭代器,但dim1=3的大小为tab2。试试这个:

dim2=2