- ベストアンサー
C言語で行列の積を求めるプログラム | C言語 行列積プログラム
- C言語で行列の積を求めるプログラムを作成する方法について解説します。
- 問題で与えられた行列x,yの積を求めるためには、2つの行列の要素を掛け合わせ、それを積の行列に格納する必要があります。
- プログラムの修正方法として、配列のインデックスの範囲や要素の掛け合わせに注意することが重要です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#include<stdio.h> int main(void) { int x[2][3] = { { 1, 2, 3 }, { 4, 5, 6} }; int y[3][2] = { { 1, 5 }, { 5, 3 }, { 8, 1 } }; int xy[2][2]; int i, j, k; for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { xy[i][j] = 0; for (k = 0; k < 3; k++) { xy[i][j] += x[i][k] * y[k][j]; } } } for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { printf("%4d", xy[i][j]); } putchar('\n'); } return 0; }
その他の回答 (2)
- kmee
- ベストアンサー率55% (1857/3366)
今のプログラムだと for(i=0;i<3;i++) for(j=0;j<3;j++) xy[i][j]=x[i][j]*y[i][j]; で I-2, j=2 のとき、 x[i][j], y[i][j] はどうなるでしょう? そして、行列の積をよく考えましょう。 xy[0][0] = x[0][0] * y[0][0] + x[0][1] * y[1][0] + .... ですよね?
お礼
もう一人の方のアドバイスもあり、しっかり理解できました。 ありがとうございます(^^)
- asuncion
- ベストアンサー率33% (2127/6289)
2行3列と3行2列の積は、何行何列になりますか? また、その行列xとyの積を手で計算するとき、どういう風にしますか?
補足
回答ありがとうございます、2行2列ですね。 間違いに気づきました、が、 やっぱりプログラムで表示しようとしてもいまいち分かりません。 よければヒントだけでも教えて頂けないでしょうか?
お礼
ちゃんとできました!i=2,j=2にすれば良いのではないかとは思ったんですけど そこからどうすればいいのか分かりませんでした。 なるほど、新しくkを作ってxy[i][j]+=にすればよかったんですね。 理屈も理解できました。どうもありがとうございます。