C言語で行列の積を計算できるような関数を作って疑問に思ったことがありま
C言語で行列の積を計算できるような関数を作って疑問に思ったことがあります。
まず↓のような2x3行列と3x2行列が計算できる関数を作りました、、
#include <stdio.h>
void mul(const int ma[2][3],const int mb[3][2],int mc[2][2])
{
int i,j,k;
for(i = 0; i < 2; i++)
for(j = 0;j < 2;j++)
for(k=0;k<3;k++)
mc[i][j]+=ma[i][k]*mb[k][j];
}
int main(void)
{
int i,j;
int ma[2][3] ={{1,2,3},{4,5,6}};
int mb[3][2] ={{7,8},{9,0},{1,2}};
int mc[2][2] ={0};
mul(ma,mb,mc);
for(i = 0;i < 2; i++)
{
for(j = 0;j < 2;j++)
printf("%4d",mc[i][j]);
putchar('\n');
}
eturn(0);
}
----------------------------------
これをmxn,nxp行列で計算できるような関数にしたいと思い
下のようにしたのですがエラーになります。どうしたらいいでしょうか・・?
#include <stdio.h>
void mul(const int ma[int m][int n],const int mb[int n][int p],int mc[m][p])
{
int i,j,k;
for(i=0;i<m;i++)
for(j=0;j<p;j++)
for(k=0;k<n;k++)
mc[i][j]+=ma[i][k]*mb[k][j];
}
int main(void)
{int i,j;
int ma[2][3] ={{1,2,3},{4,5,6}};
int mb[3][2] ={{7,8},{9,0},{1,2}};
int mc[2][2] ={0};
mul(ma,mb,mc);
for(i = 0;i < 2; i++)
{for(j = 0;j < 2;j++)
printf("%4d",mc[i][j]);
putchar('\n');}
return(0);}
お礼
ありがとうございます。 実行できました。 続きの質問がありますので、よろしければ そちらにも回答いただけますと助かります。 http://okweb.jp/kotaeru.php3?q=1472917