正方行列の対称性を確認する

CCBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、C プログラミング言語を使って正方行列が対称行列であるかどうかを確認する方法を学びます。正方行列がその転置行列と等しい場合、その正方行列は対称行列であると言われます。ここでは、行列の転置行列を求め、元の行列と比較して対称性を確認します。

注: コーディングを練習し、gcc を使ってコンパイルと実行する方法を学ぶために、自分で ~/project/main.c ファイルを作成する必要があります。

cd ~/project
## main.c を作成する
touch main.c
## main.c をコンパイルする
gcc main.c -o main
## main を実行する
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/operators("Operators") c/ControlFlowGroup -.-> c/if_else("If...Else") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/CompoundTypesGroup -.-> c/arrays("Arrays") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123215{{"正方行列の対称性を確認する"}} c/operators -.-> lab-123215{{"正方行列の対称性を確認する"}} c/if_else -.-> lab-123215{{"正方行列の対称性を確認する"}} c/for_loop -.-> lab-123215{{"正方行列の対称性を確認する"}} c/arrays -.-> lab-123215{{"正方行列の対称性を確認する"}} c/user_input -.-> lab-123215{{"正方行列の対称性を確認する"}} c/output -.-> lab-123215{{"正方行列の対称性を確認する"}} end

変数を宣言して行列を入力する

まず、変数を宣言してユーザーから行列を入力する必要があります。行列を入力するためにネストしたループを使います。ユーザーから行列を入力するには、まず行列の次元をユーザーに尋ね、それを 'n' に格納します。その後、ループを使って行列の各要素を入力します。

#include <stdio.h>

int main() {

    int c, d, a[10][10], b[10][10], n;
    printf("\n行列の次元を入力してください: \n\n");
    scanf("%d", &n);

    printf("\n行列の %d 個の要素を入力してください: \n\n", n * n);
    for (c = 0; c < n; c++)
        for (d = 0; d < n; d++)
            scanf("%d", &a[c][d]);

    return 0;
}

行列の転置行列を求める

行列の転置行列は、行と列の添え字を交換することで求められます。行列の転置行列を求めるためにネストしたループを使います。行列の転置行列を求めるには、2つのループを使います。最初のループは行を反復し、2番目のループは列を反復します。

// 行列の転置行列を求めて b[][] に格納する
for (c = 0; c < n; c++)
    for (d = 0; d < n; d++)
        b[d][c] = a[c][d];

行列の対称性を確認する

このステップでは、元の行列がその転置行列と同じかどうかを確認します。これを確認するためにネストしたループを使います。行列の対称性を確認するには、2つのループを使います。最初のループは行を反復し、2番目のループは列を反復します。

// 元の行列がその転置行列と同じかどうかを確認する
for (c = 0; c < n; c++)
    for (d = 0; d < n; d++)
        if (a[c][d]!= b[c][d]) {
            printf("\n\n行列は対称行列ではありません\n\n");
            exit(0); // プログラムを終了するシステム定義メソッド
        }

結果を表示する

行列が対称行列であることを確認した後、プログラムはこれを確認するメッセージを表示します。行列が対称行列でない場合、プログラムは終了します。

// もしまだプログラムが終了していなければ、それは行列が対称行列であることを意味する
printf("\n\n行列は対称行列です\n\n");
printf("\n\n\t\t\tコーディングは楽しい!\n\n\n");

まとめ

この実験では、C言語を使って正方行列が対称行列であるかどうかを確認する方法を学びました。ネストしたループを使って行列を入力し、その転置行列を求め、その後、元の行列がその転置行列と同じかどうかを確認しました。2つの行列が同じ場合、プログラムは行列が対称行列であることを示すメッセージを表示しました。