# C matrix multiplication

by James889
Tags: matrix, multiplication
 P: 186 Hello, I am trying to write a program that multiplies together two 3x3 matrices. However my program does not really work as intended, and i get some really strange results. Any ideas? #include #include int main() { int result_matrix[3][3]; int matrixA[3][3] = { {2,2,2}, {2,2,2}, {2,2,2} }; int matrixB[3][3] = { {4,4,4}, {4,4,4}, {4,4,4} }; for(int rows=0; rows<3; rows++) { for(int columns=0; columns<3; columns++){ for(int r=0,c=0; r<3,c<3; r++,c++){ printf("Element at result_matrix[%d][%d] is MatrixA[%d][%d] * MatrixB[%d][%d]\n",rows,columns,r,c,c,r); result_matrix[rows][columns] += matrixA[r][c] * matrixB[c][r]; } } } printf("%d\n",result_matrix[0][0]); printf("%d\n",result_matrix[0][1]); printf("%d\n",result_matrix[0][2]); printf("%d\n",result_matrix[1][0]); printf("%d\n",result_matrix[1][1]); printf("%d\n",result_matrix[1][2]); printf("%d\n",result_matrix[2][0]); printf("%d\n",result_matrix[2][1]); printf("%d\n",result_matrix[2][2]); return 0; }
 P: 583 There's no initialization of the elements of result_matrix.
 HW Helper P: 6,189 Hi James889! And you inner loop is not right. For starters, it should not cycle over r and c, but only over c.
 P: 186 C matrix multiplication Element at result_matrix[0][0] is: 25 Element at result_matrix[0][1] is: 24 Element at result_matrix[0][2] is: 24 Element at result_matrix[1][0] is: 25 Element at result_matrix[1][1] is: 24 Element at result_matrix[1][2] is: -1077941132 Element at result_matrix[2][0] is: -1077941124 Element at result_matrix[2][1] is: 672789176 Element at result_matrix[2][2] is: -1077941296 This is after i changed the inner loop to only loop through c
HW Helper
P: 6,189
 Quote by James889 This is after i changed the inner loop to only loop through c

Do you see the difference with your code?

Furthermore, MisterX already remarked that you need to initialize your result matrix to zero before trying to multiply the matrices.

Cheers!
 P: 186 result_matrix[3][3] = { {0} }; ./run Element at result_matrix[0][0] is: 24 Element at result_matrix[0][1] is: 24 Element at result_matrix[0][2] is: 24 Element at result_matrix[1][0] is: 24 Element at result_matrix[1][1] is: 24 Element at result_matrix[1][2] is: 24 Element at result_matrix[2][0] is: 24 Element at result_matrix[2][1] is: 24 Element at result_matrix[2][2] is: 24
HW Helper
P: 6,189
 Quote by James889
And yet another satisfied customer!
 P: 583 result_matrix[3][3] = { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} };

 Related Discussions Calculus & Beyond Homework 2 Precalculus Mathematics Homework 2 Linear & Abstract Algebra 1 Linear & Abstract Algebra 1