2012-04-20 91 views
4

我試圖將存儲在1d數組內的兩個矩陣相乘。使用1d數組的矩陣乘法

我正在使用這個函數,但是我的程序崩潰了,我認爲是由於出了界限錯誤。 不過,我沒有(容易)調試能力,所以我必須決定是否我的代碼是正確的,對我來說似乎是...

void SampleUtils::multiplyMatrices(float* matA, int rA, int cA, float* matB, 
     int rB, int cB, float* matC, int rC, int cC) { 
    for (int i = 0; i <= rA; i++) { 
     for (int j = 0; j <= cB; j++) { 
      float sum = 0.0; 
      for (int k = 0; k <= rB; k++) 
       sum = sum + matA[i * cA + k] * matB[k * cB + j]; 
      matC[i * cC + j] = sum; 
     } 

    } 

所以,任何人都可以找出我做了什麼錯誤?

謝謝...

+1

如果'rA'是矩陣的行數,則條件** **必須是'I Mahesh 2012-04-20 19:50:23

+1

1.使用調試器找出崩潰的位置。 2.使用向量並調用'at'以獲得拋出的異常,如果它是超出界限的錯誤。 – chris 2012-04-20 19:50:23

+1

「...對我來說,它似乎是....」 - 事實上,你的程序崩潰告訴你,這個說法是相當不正確的。如果您從假設您的代碼錯誤開始,那麼您會更快地找到解決方案,而您就是這樣做的。 – duffymo 2012-04-20 19:50:30

回答

8

機會是你的意思<而不是<=for循環。

+0

你是絕對正確的。愚蠢的錯誤在我的目的。 – 2012-04-20 19:54:47

6

嘗試使用i < rAj < cBk < rBfor