#include<stdio.h> #define NUM 3 #define NUM1 2 int m_multi(int a,int b,int x[a][b],int c,int d,int y[c][d],int z[a][d]) { int i,j,k; for(i=0;i<a;i++){ for(j=0;j<b;j++){ z[i][j]=0; } } for(i=0;i<a;i++){ for(j=0;j<d;j++){ for(k=0;k<c;k++){ z[i][j]+=x[i][k]*y[k][j]; } } } return 0; } int m_out(int a,int b,int x[a][b]) { int i,j; for(i=0;i<a;i++){ for(j=0;j<b;j++){ printf("%d ",x[i][j]); } printf("¥n"); } return 0; } int main(void) { int i,j,x[NUM][NUM1],y[NUM1][NUM],z[NUM][NUM],w[NUM1][NUM1]; printf ("%d行%d列の行列Aを入力¥n",NUM,NUM1); for(i=0;i<NUM;i++){ for(j=0;j<NUM1;j++){ scanf("%d",&x[i][j]); } } printf ("%d行%d列の行列Bを入力¥n",NUM1,NUM); for(i=0;i<NUM1;i++){ for(j=0;j<NUM;j++){ scanf("%d",&y[i][j]); } } m_multi(NUM,NUM1,x,NUM1,NUM,y,z); m_multi(NUM1,NUM,y,NUM,NUM1,x,w); puts("行列C=ABは"); m_out(NUM,NUM,z); puts("行列D=BAは"); m_out(NUM1,NUM1,w); return 0; } このような行列の積を求める関数と行列を出力する関数を作成したのですが、範囲外アクセスというものが起こるのですが対処法を教えてください
C言語関連