- 締切済み
行列の計算
#include<stdio.h> #define N 2 #define M 3 void hyoji(float[][M]); int main(){ int i,j,k; float a[N][M] = {{2.0,2.0,2.0},{2.0,2.0,2.0}}; float b[M][M] = {{1.0,1.0,1.0},{2.0,2.0,2.0},{1.0,1.0,1.0}}; float c[N][N]; for(i=0; i<N; i++){ for(j=0; j<M; j++){ c[i][j] = 0; for(k=0; k<M; k++){ c[i][j] += a[i][k] * b[k][j]; } } } hyoji(c); return(0); } void hyoji(float x[][M]){ int i,j; for(i=0; i<N; i++){ for(j=0; j<M; j++){ printf("%4.1f ",x[i][j]); } printf("\n"); } } 以上のプログラムで 行列aと行列bをかけ合せた行列cを求めるのですが コンパイルすると 8 8 8 8 8 1 となり、正しい結果がでません。 なにが間違っているのでしょうか?? よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
>float a[N][M] = {{2.0,2.0,2.0},{2.0,2.0,2.0}}; >float b[M][M] = {{1.0,1.0,1.0},{2.0,2.0,2.0},{1.0,1.0,1.0}}; >float c[N][N]; N行M列の行列とM行M列の行列の積は、N行M列の行列です。 配列cの定義内容を見直してください。
お礼
迅速な回答ありがとうございます。 確かにおっしゃるとおりでした・・・ ご迷惑おかけしました。