C언어 역행렬 질문임댜

조회수 688회
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu(void)
{

   printf("--Menu--\n");
   printf("1. Random Square Matrix Generation\n");
   printf("2. Transpose\n");
   printf("3. Rotation (90,180,270,360 degree)\n");
   printf("4. Inverse (^-1) \n");
   printf("5. Calculation (+,-,*)\n");
   printf("6. Exit\n");
   printf("Choose the item you want : ");
}
int Create_Square_Matrix(int * (matrix), int n)
{
   int i, j = 0;

   while (1)
   {
      if (n == 2 || n == 3)
      {
         for (i = 0; i < n; i++)
         {
            for (j = 0; j < n; j++)
            {
               *(matrix + (i*n) + (j)) = rand() % 100;
               printf("%d ", *(matrix + (i*n) + (j)));
            }
            printf("\n");
         }
         return n;
      }
      else
      {
         printf("Input Error\n");
      }
   }
}
void Transpose(int *(matrix), int n)
{
   int temp[3][3];


   for (int i = 0; i < n; i++)
   {
      for (int j = 0; j < n; j++)
      {
         temp[i][j] = *(matrix + (j*n) + (i));
      }
   }
   for (int i = 0; i < n; i++)
   {
      for (int j = 0; j < n; j++)
      {
         printf("%d ", temp[i][j]);
      }
      printf("\n");
   }
}
void Rotation(int *matrix, int n, int degree)
{
   int temp[3][3];



   for (int i = 0; i < n; i++)
   {
      for (int j = 0; j < n; j++)
      {
         if (degree == 90) temp[i][j] = matrix[(n - 1 - j)*n + i];
         else if (degree == 180) temp[i][j] = matrix[(n - 1 - i)*n + n - 1 - j];
         else if (degree == 270) temp[i][j] = matrix[j*n + n - 1 - i];
         else temp[i][j] = matrix[i*n + j];
      }
   }


   for (int i = 0; i < n; i++)
   {
      for (int j = 0; j < n; j++)
      {
         printf("%d ", temp[i][j]);
      }
      printf("\n");
   }
}
void Inverse(int *matrix, int n)
{
   int temp[3][3];
}

int main()
{
   srand(time(NULL)); //난수 생성 하기 위해서


   int Matrix1[3][3];
   int Matrix2[3][3];
   int n = 0;
   int select = 0;
   int run = 1;
   int degree = 0;
   while (run)
   {
      menu();
      scanf("%d", &select);
      if (select == 1)
      {
         printf("Input the number of rows(2 or 3) : ");
         scanf("%d", &n);
         printf("X=\n");
         Create_Square_Matrix((int*)Matrix1, n);
         printf("Y=\n");
         Create_Square_Matrix((int*)Matrix2, n);
      }
      if (n != 2 && n != 3)
      {
         printf("Random Square Matrix Not Ready\n");
         continue;
      }
      if (select == 2)
      {
         printf("X^T=\n");
         Transpose((int*)Matrix1, n);
         printf("Y^T=\n");
         Transpose((int *)Matrix2, n);
      }
      if (select == 3)
      {
         printf("Input rotation degree by clockwise : ");
         scanf("%d", &degree);
         printf("X=\n");
         Rotation((int*)Matrix1, n, degree);
         printf("Y=\n");
         Rotation((int *)Matrix2, n, degree);
      }
      if (select == 4)
      {


      }
      if (select == 5)
      {


      }
      if (select == 6)
      {
         printf("Exit, thank you\n");
         run = 0;
      }


   }


   return 0;
}

현재 짠 코드입니다 이제 역행렬을 만드는 식을 작성하고싶은데 좀 감이 안잡혀 힌트라도 희망하여 글남깁니다

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)