c언어 행렬 곱 and 더하기
#include<stdio.h>
#define ROWS 3
#define COLS 3
void A_MAT_ADD_B_MAT(int[][COLS], int[][COLS]);
void A_MAT_MUL_B_MAT(int[][COLS], int[][COLS]);
int main(void)
{
int ROW_INDEX, COLS_INDEX;
int A_MAT[ROWS][COLS] = { { 2, 3, 0 },
{ 8, 9, 1 },
{ 7, 0, 5 } };
int B_MAT[ROWS][COLS] = { { 1, 0, 0 },
{ 8, 0, 1 },
{ 1, 0, 5 } };
printf("<<< A >>>\n");
for (ROW_INDEX = 0; ROW_INDEX < ROWS; ROW_INDEX++)
{
for (COLS_INDEX = 0; COLS_INDEX < COLS; COLS_INDEX++)
{
printf("%d ", A_MAT[ROW_INDEX][COLS_INDEX]);
if (COLS_INDEX == COLS - 1)
{
printf("\n");
}
}
}
printf("\n");
printf("<<< B >>>\n");
for (ROW_INDEX = 0; ROW_INDEX < ROWS; ROW_INDEX++)
{
for (COLS_INDEX = 0; COLS_INDEX < COLS; COLS_INDEX++)
{
printf("%d ", B_MAT[ROW_INDEX][COLS_INDEX]);
if (COLS_INDEX == COLS - 1)
{
printf("\n");
}
}
}
printf("\n");
printf("<<< A + B >>>\n");
A_MAT_ADD_B_MAT(A_MAT, B_MAT);
printf("\n");
printf("<<< A * B >>>\n");
A_MAT_MUL_B_MAT(A_MAT, B_MAT);
return 0;
}
void A_MAT_ADD_B_MAT(int a[][COLS], int b[][COLS])
{
int ROW_INDEX, COLS_INDEX;
int c[ROWS][COLS] = { 0, };
for (ROW_INDEX = 0; ROW_INDEX < ROWS; ROW_INDEX++)
{
for (COLS_INDEX = 0; COLS_INDEX < COLS; COLS_INDEX++)
{
c[ROW_INDEX][COLS_INDEX] = a[ROW_INDEX][COLS_INDEX]
+ b[ROW_INDEX][COLS_INDEX];
}
}
for (ROW_INDEX = 0; ROW_INDEX < ROWS; ROW_INDEX++)
{
for (COLS_INDEX = 0; COLS_INDEX < COLS; COLS_INDEX++)
{
printf("%2d ", c[ROW_INDEX][COLS_INDEX]);
if (COLS_INDEX == COLS - 1)
{
printf("\n");
}
}
}
}
void A_MAT_MUL_B_MAT(int a[][COLS], int b[][COLS])
{
int ROW_INDEX, COLS_INDEX, INDEX;
int sum = 0;
int TEMP = 0;
int c[ROWS][COLS] = { 0, };
for (ROW_INDEX = 0; ROW_INDEX < ROWS; ROW_INDEX++)
{//0 1
for (INDEX = 0; INDEX < ROWS; INDEX++)
{//0 1 2
for (COLS_INDEX = 0; COLS_INDEX < COLS; COLS_INDEX++)
{//0
c[ROW_INDEX][INDEX] +=
a[ROW_INDEX][TEMP] * b[TEMP][INDEX];
//00 = 00*00 + 01*10+ 02*20
//01 = 00*01 + 01*11+ 02*21
//02 = 00*02 + 01*12+ 02*22
TEMP++;
}
TEMP = 0;
}
}
for (ROW_INDEX = 0; ROW_INDEX < ROWS; ROW_INDEX++)
{
for (COLS_INDEX = 0; COLS_INDEX < COLS; COLS_INDEX++)
{
printf("%2d ", c[ROW_INDEX][COLS_INDEX]);
if (COLS_INDEX == COLS - 1)
{
printf("\n");
}
}
}
}