소개
이 랩에서는 C 프로그래밍 언어를 사용하여 정방 행렬이 대칭인지 여부를 확인하는 방법을 배우겠습니다. 정방 행렬은 전치 행렬과 같으면 대칭이라고 합니다. 행렬의 전치 행렬을 구하고 원래 행렬과 비교하여 대칭성을 확인합니다.
참고: 코딩을 연습하고 gcc 를 사용하여 컴파일하고 실행하는 방법을 배우려면 직접
~/project/main.c파일을 생성해야 합니다.
cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main
변수 선언 및 행렬 입력
먼저 변수를 선언하고 사용자로부터 행렬을 입력받아야 합니다. 중첩 루프를 사용하여 행렬을 입력합니다. 사용자로부터 행렬을 입력받기 위해 먼저 사용자에게 행렬의 차원을 묻고 'n'에 저장합니다. 그런 다음 루프를 사용하여 행렬의 각 요소를 입력합니다.
#include <stdio.h>
int main() {
int c, d, a[10][10], b[10][10], n;
printf("\nEnter the dimension of the matrix: \n\n");
scanf("%d", &n);
printf("\nEnter the %d elements of the matrix: \n\n", n * n);
for (c = 0; c < n; c++)
for (d = 0; d < n; d++)
scanf("%d", &a[c][d]);
return 0;
}
행렬의 전치 행렬 구하기
행렬의 전치 행렬은 행과 열의 인덱스를 교환하여 얻습니다. 중첩 루프를 사용하여 행렬의 전치 행렬을 구합니다. 행렬의 전치 행렬을 구하기 위해 두 개의 루프를 사용합니다. 첫 번째 루프는 행을 반복하고, 두 번째 루프는 열을 반복합니다.
// finding transpose of a matrix and storing it in b[][]
for (c = 0; c < n; c++)
for (d = 0; d < n; d++)
b[d][c] = a[c][d];
행렬 대칭성 확인
이 단계에서는 원래 행렬이 전치 행렬과 동일한지 확인합니다. 중첩 루프를 사용하여 이를 확인합니다. 행렬의 대칭성을 확인하기 위해 두 개의 루프를 사용합니다. 첫 번째 루프는 행을 반복하고, 두 번째 루프는 열을 반복합니다.
// checking if the original matrix is the same as its transpose
for (c = 0; c < n; c++)
for (d = 0; d < n; d++)
if (a[c][d] != b[c][d]) {
printf("\n\nMatrix is not Symmetric\n\n");
exit(0); // a system defined method to terminate the program
}
결과 출력
행렬이 대칭임을 확인한 후, 프로그램은 이를 확인하는 메시지를 표시합니다. 행렬이 대칭이 아닌 경우 프로그램은 종료됩니다.
// If the program is not terminated yet, it means the matrix is symmetric
printf("\n\nMatrix is Symmetric\n\n");
printf("\n\n\t\t\tCoding is Fun !\n\n\n");
요약
이 랩에서는 C 프로그래밍 언어를 사용하여 정방 행렬이 대칭인지 확인하는 방법을 배웠습니다. 중첩 루프를 사용하여 행렬을 입력하고 전치 행렬을 구한 다음, 원래 행렬이 전치 행렬과 동일한지 확인했습니다. 두 행렬이 동일한 경우, 프로그램은 행렬이 대칭임을 나타내는 메시지를 표시했습니다.



