#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");
   }
  }
 }
}

 

 

'언어' 카테고리의 다른 글

삽입정렬  (0) 2016.01.12
링크드리스트  (0) 2016.01.10
이거 좀 신기하다 공부해볼것  (0) 2015.12.06
짝수만 합하자  (0) 2015.10.10
지식인  (0) 2015.10.03