こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語 プログラミング 行列演算

下記のプログラムのおかしい点と解決法を教えてください。
コンパイルは通りますがうまく動きません。。

#include<stdio.h>

#define MAX 500


int main(void){

int matrA[MAX][MAX],matrB[MAX][MAX],matrC[MAX][MAX],l,m,n,i,j,k;

printf("lとmを入力してください:");
scanf("%d",&l);
scanf("%d",&m);

printf("行列Aを入力してください");
for(i=0;i<l;i++){
printf(">");
for(j=0;l<m;j++){
scanf("%d",&matrA[i][j]);
}
printf("\n");
}

printf("nを入力してください(m = %d):",m);
scanf("%d",&n);

printf("行列Bを入力してください");
for(i=0;i<m;i++){
printf(">");
for(j=0;j<n;j++){
scanf("%d",&matrB[i][j]);
}
printf("\n");
}

printf("C=\n");
for(i=0;i<l;i++){
for(j=0;j<n;j++){
for(k=0;k<m;k++){
matrC[i][j]+=matrA[i][k]*matrB[k][j];
}
printf("%d",matrC[i][j]);
}
printf("\n");
}
}

投稿日時 - 2009-07-08 17:49:22

QNo.5109020

すぐに回答ほしいです

質問者が選んだベストアンサー

matrCが初期化されてないですね。

> for(j=0;j<n;j++){
> matrC[i][j]=0;
> for(k=0;k<m;k++){

といった感じで0で初期化しましょう。

投稿日時 - 2009-07-08 18:19:21

お礼

早々な回答ありがとうございます!bcc developerの調子が悪くてコンパイルできず、確かめられなかったですが間違えがわかって助かりました!
ありがとうございます。

投稿日時 - 2009-07-09 01:41:00

ANo.1

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

他におかしいと思えるのはここ。
> for(j=0;l<m;j++){
mとかlとかでなく、意味のある名前にした方が良かったかもしれませんね。

投稿日時 - 2009-07-08 18:23:23

お礼

こんな細かいとこまで気づいてもらって助かりました!
ありがとうございます。

投稿日時 - 2009-07-09 01:42:18

あなたにオススメの質問