-
Notifications
You must be signed in to change notification settings - Fork 0
/
ex0612.c
75 lines (51 loc) · 994 Bytes
/
ex0612.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/* m*n行列とn*m行列の積を求める */
#include <stdio.h>
#define M 2
#define N 2
/* 積計算を行う関数 */
void mat_mul(const int a[M][N], const int b[N][M], int c[M][M])
{
int i,j,k;
for(i=0; i<M; i++){
for(k=0; k<M; k++){
for(j=0; j<N; j++){
c[i][k] += a[i][j]*b[j][i];
}
}
}
}
/* 計算結果の表示を行う関数*/
void mat_print(int c[M][M])
{
int i,j;
for(i=0; i<M; i++){
for(j=0; j<M; j++){
printf("%4d",c[i][j]);
}
putchar('\n');
}
}
int main(void)
{
int i,j;
int ax[M][N], bx[N][M], cx[M][M];
puts("行列の積を求めます。");
/* 計算する行列の入力 */
for(i=0; i<M; i++){
for(j=0; j<N; j++){
printf("a[%d][%d]の値は?",i,j);
scanf("%d",&ax[i][j]);
}
}
for(i=0; i<N; i++){
for(j=0; j<M; j++){
printf("b[%d][%d]の値は?",i,j);
scanf("%d",&bx[i][j]);
}
}
/* 行列の積の計算 */
mat_mul(ax, bx, cx);
/* 計算結果の表示 */
mat_print(cx);
return 0;
}