La multiplication de matrice à l'aide de tableaux 1d

Je suis en train de multiplier deux matrices stockées à l'intérieur des tableaux 1d.

Je suis en utilisant cette fonction, mais mon programme plante, je suppose en raison d'une erreur de limites.
Cependant, je n'ai pas (facile) capacité de debug, j'ai donc décider si mon code est correct, et pour moi, il semble qu'il est...

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;
        }

    }

Donc, quelqu'un peut-il savoir ce que j'ai fait de mal?

Merci...

Si rA est le nombre de lignes de la matrice, alors la condition être i < rA. De la même manière à d'autres endroits.
1. Utiliser un débogueur pour savoir où il se bloque. 2. L'utilisation de vecteurs et d'appel at pour obtenir une exception levée si c'est une erreur de limites.
"... il me semble qu'il est...." - le fait que votre programme se bloque vous dit que cette déclaration est tout à fait incorrect. Vous trouverez rapidement une solution si vous commencez avec l'hypothèse que votre code est faux, et vous êtes celui qui fait en sorte.
N'est-ce pas rB toujours égale à cA, et rC n'est pas utilisé? En général, je pense que vous avez seulement besoin de trois tailles différentes (ra=rC, rb=cA, et cb=cC, si je me souviens bien), pas plus de six; éliminer le solde non utilisé des paramètres afin de réduire la confusion.
ouais, je pense que c'est incorrect. peut-être que mon anglais est éteint, mais c'était ma manière de dire: "je ne peux pas comprendre ce que l'enfer ne va pas avec elle" 🙂 Aussi, la somme doit être un float, évidemment 😛

OriginalL'auteur Tom Teman | 2012-04-20