行列の積について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
レモン

行列の積について

#1

投稿記事 by レモン » 16年前

行列の積を計算するプログラムを作っています。
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");
	}

}

mats

Re:行列の積について

#2

投稿記事 by mats » 16年前

行列Bの値を受け取るところで、行列Aに代入を行っています

レモン

Re:行列の積について

#3

投稿記事 by レモン » 16年前

ぴよぴよさんどうもありがとうございます。
今訂正してコンパイルしなおしたら
./gyouretu32.c: line 8: unexpected EOF while looking for matching ``'
./gyouretu32.c: line 90: syntax error: unexpected end of file
と出てしまい、コンパイルできなくなっていました。

この原因がわかる方がいれば、教えていただけないでしょうか?

レモン

Re:行列の積について

#4

投稿記事 by レモン » 16年前

解決しました。
コンパイルできなくなってた理由はコマンドを打ち間違えてたせいでした。

ぴよぴよさん、どうもありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る