2016-12-04 106 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)