初めておじゃまします。ソリッドと申します。
早速質問なんですが、
配列の問題で
123 15
456 と 53
81
の行列の積を求めよとゆうのがあるんですが、なかなかうまくいきません。
配列の部分が
int a[2][3]={{1,2,3}{4,5,6}};
int b[3][2]={{1,5}{5,3}{8,1}};
とゆう風になって、for文でやればうまくいくと思うのですが・・・。
どなたか教えていただけないでしょうか?
問題と配列の定義から推測すると配列の定義は合っていると思います.
答えを書くのは簡単なのですが
現在はどうゆう処理を書いてどうゆう結果になったか書いてみては如何ですか?
「for文を使う」というのも正解の1つで合っていますよ.
配列の要素は下記のようになっています.
a[0][0]が1
a[0][1]が2
a[0][2]が3
a[1][0]が4
a[1][1]が5
a[1][2]が6
b[0][0]が1
b[0][1]が5
b[1][0]が5
b[1][1]が3
b[2][0]が8
b[2][1]が1
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2]={{1,5},{5,3},{8,1}};
のようにコマを入れると解決できると思う。
どうもソリッドです。
kuさん、Johnnyさん返信有り難う御座います。一用出来ました。多分・・・。
しかし、本とか見ながらやったんでなんか分かりきった気がしません。
特にfor文の所です。何故この配列の積が下のようなForの連続で出てくるのか
どうもしっくりきません。
int a[2][3]=
int b[2][3]=
などなら分かるんですが、問題のようなそれぞれの要素が同じでない時にどうゆ
う風にfor文を使うか分からなくなってしまいます。
もし良かったら教えていただけないでしょうか?
#include <stdio.h>
int main(void)
{
int i, j, k;
int ma[2][3] = { {1, 2, 3}, {4, 5, 6} };
int mb[3][2] = { {1, 5}, {5, 3}, {8, 1} };
int mc[2][2] = { 0 };
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
for (k = 0; k < 3; k++)
mc[i][j] = ma[i][k] * mb[k][j];
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++)
printf(%3d, mc[i][j]);
putchar(\n);
}
return 0;
}
突然すいませんが、掲載してあるプログラム、11行目の=の左横に
+が抜けてますよ。