• ベストアンサー

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"); } }

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

matrCが初期化されてないですね。 > for(j=0;j<n;j++){ > matrC[i][j]=0; > for(k=0;k<m;k++){ といった感じで0で初期化しましょう。

tomato1414
質問者

お礼

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

その他の回答 (1)

  • Werner
  • ベストアンサー率53% (395/735)
回答No.2

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

tomato1414
質問者

お礼

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

関連するQ&A