#include <stdio.h>
// 行列のサイズを定義
#define M 4 // aの行数(縦)
#define N 3 // aの列数 兼 bの行数
#define K 4 // bの列数(横)
int main(void) {
// aは 4行3列 (M x N)
int a[M][N] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{0, 9, 8}
};
// bは 3行4列 (N x K)
int b[N][K] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 0, 9, 8}
};
// 計算結果の sum は 4行4列 (M x K) になる
int sum[3][K];
// --- 行列の掛け算処理(3重ループ) ---
for (int i = 0; i < 3; i++) { // aの行を上から順に(4回)
for (int j = 0; j < K; j++) { // bの列を左から順に(4回)
sum[i][j] = 0; // 計算を始める前に中身を0にリセット
for (int x = 0; x < N; x++) { // aの横移動 と bの縦移動(3回)
sum[i][j] += a[i][x] * b[x][j];
}
}
}
// --- 結果の表示 ---
printf("--- 計算結果 (4行4列) ---\n"); for (int i = 0; i < 3; i++) {
for (int j = 0; j < K; j++) {
printf("%3d ", sum
[i
][j
]); // %3d で数字の幅を綺麗に揃える }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyDooYzliJfjga7jgrXjgqTjgrrjgpLlrprnvqkKI2RlZmluZSBNIDQgIC8vIGHjga7ooYzmlbDvvIjnuKbvvIkKI2RlZmluZSBOIDMgIC8vIGHjga7liJfmlbAg5YW8IGLjga7ooYzmlbAKI2RlZmluZSBLIDQgIC8vIGLjga7liJfmlbDvvIjmqKrvvIkKCmludCBtYWluKHZvaWQpIHsKICAgIC8vIGHjga8gNOihjDPliJcgKE0geCBOKQogICAgaW50IGFbTV1bTl0gPSB7CiAgICAgICAgezEsIDIsIDN9LAogICAgICAgIHs0LCA1LCA2fSwKICAgICAgICB7NywgOCwgOX0sCiAgICAgICAgezAsIDksIDh9CiAgICB9OwogICAgCiAgICAvLyBi44GvIDPooYw05YiXIChOIHggSykKICAgIGludCBiW05dW0tdID0gewogICAgICAgIHsxLCAyLCAzLCA0fSwKICAgICAgICB7NSwgNiwgNywgOH0sCiAgICAgICAgezksIDAsIDksIDh9CiAgICB9OwogICAgCiAgICAvLyDoqIjnrpfntZDmnpzjga4gc3VtIOOBryA06KGMNOWIlyAoTSB4IEspIOOBq+OBquOCiwogICAgaW50IHN1bVszXVtLXTsKCiAgICAvLyAtLS0g6KGM5YiX44Gu5o6b44GR566X5Yem55CG77yIM+mHjeODq+ODvOODl++8iSAtLS0KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7ICAgICAgICAgLy8gYeOBruihjOOCkuS4iuOBi+OCiemghuOBq++8iDTlm57vvIkKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IEs7IGorKykgeyAgICAgLy8gYuOBruWIl+OCkuW3puOBi+OCiemghuOBq++8iDTlm57vvIkKICAgICAgICAgICAgCiAgICAgICAgICAgIHN1bVtpXVtqXSA9IDA7ICAgICAgICAgICAgICAgIC8vIOioiOeul+OCkuWni+OCgeOCi+WJjeOBq+S4rei6q+OCkjDjgavjg6rjgrvjg4Pjg4gKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgTjsgeCsrKSB7IC8vIGHjga7mqKrnp7vli5Ug44GoIGLjga7nuKbnp7vli5XvvIgz5Zue77yJCiAgICAgICAgICAgICAgICBzdW1baV1bal0gKz0gYVtpXVt4XSAqIGJbeF1bal07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgfQogICAgfQoKICAgIC8vIC0tLSDntZDmnpzjga7ooajnpLogLS0tCiAgICBwcmludGYoIi0tLSDoqIjnrpfntZDmnpwgKDTooYw05YiXKSAtLS1cbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IEs7IGorKykgewogICAgICAgICAgICBwcmludGYoIiUzZCAiLCBzdW1baV1bal0pOyAvLyAlM2Qg44Gn5pWw5a2X44Gu5bmF44KS57a66bqX44Gr5o+D44GI44KLCiAgICAgICAgfQogICAgICAgIHByaW50ZigiXG4iKTsgLy8gMeihjOihqOekuuOBl+e1guOCj+OBo+OBn+OCieaUueihjAogICAgfQoKICAgIHJldHVybiAwOwp9