2×3と3×2の2次行列の積を求めるコードが書きたいのですが、
bの部分を__mul_array__に正確に伝えることができません。
なぜこのようなことが起こっているのかを教えていただきたいです。
c
1 2#include <stdio.h> 3 4void mul_array( const int (*x)[3], const int (*y)[3], int (*ans)[3] ); 5 6int main(void) { 7 int i,j; 8 int a[2][3] = {1,2,3, 4,5,6}; 9 int b[3][2] = {1,5, 5,3, 8,1}; 10 int ans[2][2] = {0}; 11 12 mul_array(a,b,ans); 13 14 return (0); 15} 16 17void mul_array( const int (*x)[3], const int (*y)[3], int (*ans)[3] ) { 18 int a,b,i; 19 for(int a=0; a<2; a++) { 20 for(int b=0; b<2; b++) { 21 ans[a][b]=0; 22 for(int i=0; i<3; i++) { 23 24 printf("[%d,%d]",a,i); 25 printf("[%d,%d]",i,b); 26 printf("[%d]",x[a][i]); 27 printf("[%d]",y[i][b]); 28 putchar('\n'); 29 ans[a][b]+=x[a][i]*y[i][b]; 30 } 31 } 32 } 33} 34
terminal
1[0,0][0,0][1][1] 2[0,1][1,0][2][3] 3[0,2][2,0][3][0] 4[0,0][0,1][1][5] 5[0,1][1,1][2][8] 6[0,2][2,1][3][0] 7[1,0][0,0][4][1] 8[1,1][1,0][5][3] 9[1,2][2,0][6][0] 10[1,0][0,1][4][5] 11[1,1][1,1][5][8] 12[1,2][2,1][6][0]
別に大したことじゃないけど、mul_array で i が二度宣言されてて、片方しか使われてないなら最初に宣言した方は消した方が良いんじゃないかな
回答1件
あなたの回答
tips
プレビュー