• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語、行列の積を求めるプログラムについて)

C言語で行列の積を求めるプログラム | C言語 行列積プログラム

このQ&Aのポイント
  • C言語で行列の積を求めるプログラムを作成する方法について解説します。
  • 問題で与えられた行列x,yの積を求めるためには、2つの行列の要素を掛け合わせ、それを積の行列に格納する必要があります。
  • プログラムの修正方法として、配列のインデックスの範囲や要素の掛け合わせに注意することが重要です。

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

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.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; }

hitosashi
質問者

お礼

ちゃんとできました!i=2,j=2にすれば良いのではないかとは思ったんですけど そこからどうすればいいのか分かりませんでした。 なるほど、新しくkを作ってxy[i][j]+=にすればよかったんですね。 理屈も理解できました。どうもありがとうございます。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

今のプログラムだと 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] + .... ですよね?

hitosashi
質問者

お礼

もう一人の方のアドバイスもあり、しっかり理解できました。 ありがとうございます(^^)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

2行3列と3行2列の積は、何行何列になりますか? また、その行列xとyの積を手で計算するとき、どういう風にしますか?

hitosashi
質問者

補足

回答ありがとうございます、2行2列ですね。 間違いに気づきました、が、 やっぱりプログラムで表示しようとしてもいまいち分かりません。 よければヒントだけでも教えて頂けないでしょうか?