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", °ree);
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;
}
현재 짠 코드입니다 이제 역행렬을 만드는 식을 작성하고싶은데 좀 감이 안잡혀 힌트라도 희망하여 글남깁니다
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력