- ベストアンサー
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"); } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
matrCが初期化されてないですね。 > for(j=0;j<n;j++){ > matrC[i][j]=0; > for(k=0;k<m;k++){ といった感じで0で初期化しましょう。
その他の回答 (1)
- Werner
- ベストアンサー率53% (395/735)
他におかしいと思えるのはここ。 > for(j=0;l<m;j++){ mとかlとかでなく、意味のある名前にした方が良かったかもしれませんね。
お礼
こんな細かいとこまで気づいてもらって助かりました! ありがとうございます。
お礼
早々な回答ありがとうございます!bcc developerの調子が悪くてコンパイルできず、確かめられなかったですが間違えがわかって助かりました! ありがとうございます。