質問です

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

質問です

#1

投稿記事 by ユーリ » 16年前

#include <stdio.h>

int main(void)
{
	int i,j,k;
	int a[3][3]={{0,1,2},{1,2,3,},{2,3,4}};
	int b[3][3]={{0,1,2},{1,2,3,},{2,3,4}};
	int c[3][3];
printf("行列A\n");
         for(i=0; i<3; i++){
		printf("%d %d %d",a[0],a[1],a[2]);
				printf("\n");
			}
		printf("行列B\n");
		for(i=0; i<3; i++){
				printf("%d %d %d",a[0],a[1],a[2]);
				printf("\n");
			}
				for(i=0; i<3; i++){
			for(j=0; j<3; j++){
		for(k = 0; k<3; k++){
				c[j]=a[k]*b[k][j];
			}
		}
	}
		printf("行列C\n");
		for(i=0;i<3;i++){
			for(j=0;j<3;j++){
				
				printf("%5d", c[j]);
         }
				printf("\n");
			
			}
		
				
	return 0;
}

行列の積の計算をするプログラムを作りたいのですがどこが間違っているのでしょうか?
よろしければ教えてください。

conio

Re:質問です

#2

投稿記事 by conio » 16年前

--------------------------------
for(i=0; i<3; i++){
  for(j=0; j<3; j++){
    for(k = 0; k<3; k++){
        c[j]=a[k]*b[k][j];
    }
  }
}
--------------------------------
この部分を順に、どのように計算されているかを調べれば良いのでは無いでしょうか。

下記のようにすれば、恐らく原因が分かるはずです。
--------------------------------
for(i=0; i<3; i++){
  for(j=0; j<3; j++){
    for(k = 0; k<3; k++){
        c[j]=a[k]*b[k][j];
        printf("c[%d][%d] = a[%d][%d] * b[%d][%d]", i,j,i,k,k,j);
        printf("( %d = %d * %d )\n", c[j], a[k], b[k][j]);
    }
  }
}
--------------------------------

あと、見たところ配列Cが初期化されて無いです。

ユーリ

Re:質問です

#3

投稿記事 by ユーリ » 16年前

ありがとうございました。
解決いたしました。

閉鎖

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