2016-12-04 148 views
-1

错误的乘法matrixError的乘法matrixError的乘法乘法矩阵错误矩阵

Matrix operator * (Matrix tmp) 
{ 
    Matrix prod; 
    prod.size = size; 
    prod.ptr = new int *[size]; 

    for(int i=0; i<size; i++) 

     prod.ptr[i] = new int [size]; 

     for(int i=0; i<size; i++) 
     { 
      for(int j=0; j<size; j++) 
      { 
       for(int k=0; k<size; k++) 
       { 
        *(*(prod.ptr+i)+j) += *(*(ptr+i)+k) * *(*(tmp.ptr+k)+j); 
       } 
      } 
     }   
    return prod; 
} 
+1

解决这些问题的正确工具是您的调试器。在*堆栈溢出问题之前,您应该逐行执行您的代码。如需更多帮助,请阅读[如何调试小程序(由Eric Lippert撰写)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,您应该\编辑您的问题,以包含一个[最小,完整和可验证](http://stackoverflow.com/help/mcve)示例,该示例再现了您的问题,以及您在调试器。 –

回答

1

之前您继续乘法的,不要忘记prod矩阵初始化你的元素为0,因为他们会然后积累资金。

for(int i=0; i<size; i++) 
    prod.ptr[i] = new int [size]; 

在此之后,初始化结果矩阵的元素为0:

for(int i=0; i<size; i++) for(int j=0; j<size; j++) 
     prod.ptr[i][j] = 0; 

PS:您的代码仅适用于正方形矩阵(#rows = #columns)