マクロを用いて行列を計算
マクロM,Nを定義して、M✕N行列の和と差を計算するプログラムを作成したいです。
はじめにどんなことを書けばいいかなど、ヒントなど教えてくれると幸いです。
実行例としては、下のようになればOKです。
実行例(3×2行列)
$ ./a.out
A?
(1, 1)成分? 1
(1, 2)成分? 2
(2, 1)成分? 3
(2, 2)成分? 4
(3, 1)成分? 5
(3, 2)成分? 6
B?
(1, 1)成分? 6
(1, 2)成分? 3
(2, 1)成分? 4
(2, 2)成分? 5
(3, 1)成分? 1
(3, 2)成分? 2
A=
1 2
3 4
5 6
B=
6 3
4 5
1 2
A+B=
7 5
7 9
6 8
A-B=
-5 -1
-1 -1
4 4
$
ありがとうございます。では、マクロを使わずに行列演算するプログラムを示します。
int main(void)
{
/*2✕3の行列*/
int ma[2][3],mb[2][3],mc[2][3];
int i,j;
/*行列A*/
printf("A?\n");
for(i=0;i<2;i++) {
for(j=0;j<3;j++) {
printf("(%d,%d)成分?", i+1, j+1);
scanf("%d",&ma[i][j]);
}
}
/*行列B*/
printf("B?\n");
for(i=0;i<2;i++) {
for(j=0;j<3;j++) {
printf("(%d,%d)成分?", i+1, j+1);
scanf("%d",&mb[i][j]);
}
}
/*A*/
printf("A= \n");
for(i=0;i<2;i++) {
for(j=0;j<3;j++) {
printf("%3d", ma[i][j]);
}printf("\n");
}
/*B*/
printf("B= \n");
for(i=0;i<2;i++) {
for(j=0;j<3;j++) {
printf("%3d", mb[i][j]);
}printf("\n");
}
/*A+B*/
printf("A+B= \n");
for(i=0;i<2;i++) {
for(j=0;j<3;j++) {
printf("%3d", ma[i][j] + mb[i][j]);
}printf("\n");
}
/*A-B*/
printf("A-B= \n");
for(i=0;i<2;i++) {
for(j=0;j<3;j++) {
printf("%3d", ma[i][j] - mb[i][j]);
}printf("\n");
}
}