A*B=Cの行列を計算するプログラムを書いたのですが、Cの値がすべて0になってしまいます。
Cの値を出すためにはどこを直したら良いのか教えていただきたいです。
C言語の知識は授業で行列式の表し方を習ったぐらいで、計算式の方は本から引用しています。
コンパイルはできました。
#include <stdio.h>
main()
{
int l,m,n,i,j,k;
double a[20][20];
double b[20][20];
double c[20][20];//配列の定義
printf("A-Row = ");
fflush(stdout);
scanf("%d",&l);
printf("A-Column B-Row = ");
fflush(stdout);
scanf("%d",&m);
printf("B-Column = ");
fflush(stdout);
scanf("%d",&n);
printf("\n");
for(i=0;i<l;i++)
{
for(j=0;j<m;j++)
{
printf(" A[ %d, %d] = ",i+1,j+1);
fflush(stdout);
scanf("%lf",&a[j]);
}
}
printf(" A = \n");
for(i=0;i<l;i++)
{
for(j=0;j<m;j++)
{
printf(" %5f\t",a[j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf(" B[ %d, %d] = ",i+1,j+1);
fflush(stdout);
scanf("%lf",&a[j]);
}
}
printf(" B = \n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf(" %5f\t",a[j]);
}
printf("\n");
}
for(i=0;i<l;i++)
{
for(j=0;j<n;j++)
{
c[j] = 0;
for(k=0;k<m;k++)
{
c[j] = c[j] + a[k] * b[k][j];
}
}
}
printf("\n");
printf(" C = \n");
for(i=0;i<l;i++)
{
for(j=0;j<n;j++)
{
printf("%5f\t",c[j]);
}
printf("\n");
}
}