정방 행렬 대칭성 확인

CBeginner
지금 연습하기

소개

이 랩에서는 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 프로그래밍 언어를 사용하여 정방 행렬이 대칭인지 확인하는 방법을 배웠습니다. 중첩 루프를 사용하여 행렬을 입력하고 전치 행렬을 구한 다음, 원래 행렬이 전치 행렬과 동일한지 확인했습니다. 두 행렬이 동일한 경우, 프로그램은 행렬이 대칭임을 나타내는 메시지를 표시했습니다.