行列乗算演算
Posted: 2020年11月05日(木) 14:09
こんにちは、
今学校の課題で行列乗算演算のプログラムを書いています。
2 3
1 2 3 Invalid calculation!! (2*3 2*1の計算)
4 5 6 4 2 (2*3 3*2の計算の答え)
2 1 10 5
1
0
2 3
1 2 3
4 5 6
3 2
1 0
0 1
1 0
左の数字を入力して右の答えを出力しなきゃいけないんですが、そこのコードを上手くかけません。
下に書いてあるプログラムは2*3×3*2のプログラムです。この式も論理的に合っているかわからないのでアドバイスいただけませんでしょうか。
よろしくお願いします。
#include<stdio.h>
int main(){
{
int A[2][3],B[3][2],C[2][2];
int tmp[2][2]; //answer
int i,j,k;
/* caliculate */
for(i=0; i<2; i++){
for(j=0; j<2; j++){
tmp[j] = 0;
for(k=0; k<3; k++)tmp[j] += A[k]*B[k][j];
}
}
/* result copy to C*/
for(i=0; i<2; i++)
for(j=0; j<2; j++)
C[j] = tmp[j];
}
return 0;
}
今学校の課題で行列乗算演算のプログラムを書いています。
2 3
1 2 3 Invalid calculation!! (2*3 2*1の計算)
4 5 6 4 2 (2*3 3*2の計算の答え)
2 1 10 5
1
0
2 3
1 2 3
4 5 6
3 2
1 0
0 1
1 0
左の数字を入力して右の答えを出力しなきゃいけないんですが、そこのコードを上手くかけません。
下に書いてあるプログラムは2*3×3*2のプログラムです。この式も論理的に合っているかわからないのでアドバイスいただけませんでしょうか。
よろしくお願いします。
#include<stdio.h>
int main(){
{
int A[2][3],B[3][2],C[2][2];
int tmp[2][2]; //answer
int i,j,k;
/* caliculate */
for(i=0; i<2; i++){
for(j=0; j<2; j++){
tmp[j] = 0;
for(k=0; k<3; k++)tmp[j] += A[k]*B[k][j];
}
}
/* result copy to C*/
for(i=0; i<2; i++)
for(j=0; j<2; j++)
C[j] = tmp[j];
}
return 0;
}