C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で下三角行列を表示するプログラムの作成方法を解説

下三角行列(Lower Triangular Matrix)とは、主対角線より上側にあるすべての要素が 0 である行列のことです。この記事では、C# を使って下三角行列を表示するプログラムの作り方を、サンプルコードと実行結果つきでわかりやすく解説します。

下三角行列の基本条件

下三角行列を作るポイントは、行番号 i と列番号 j を比較し、主対角線より上の要素だけを 0 に置き換えることです。具体的には、次のような条件分岐を使用します。

if (i >= j)
    Console.Write(A[i, j] + "\t");
else
    Console.Write("0\t");

i >= j のとき(主対角線およびその下側)は元の値をそのまま表示し、それ以外(主対角線より上側)は 0 を表示します。この条件により、行列の左下側だけが残る形になります。

C# サンプルコード

以下のコードを実行すると、キーボードから入力した行列をもとに、下三角行列をコンソールへ出力できます。

using System;
using System.Linq;

class Demo {
    static void Main() {
        int m, n, i, j;
        Console.Write("行列の行数を入力してください: ");
        m = Convert.ToInt32(Console.ReadLine());
        Console.Write("行列の列数を入力してください: ");
        n = Convert.ToInt32(Console.ReadLine());

        int[] A = new int[10, 10];
        Console.WriteLine("\n行列の要素を入力してください:");
        for (i = 0; i < m; i++) {
            for (j = 0; j < n; j++) {
                A[i, j] = Convert.ToInt32(Console.ReadLine());
            }
        }

        Console.Clear();

        // 入力された元の行列を表示
        Console.WriteLine("\n元の行列:");
        for (i = 0; i < m; i++) {
            for (j = 0; j < n; j++) {
                Console.Write(A[i, j] + "\t");
            }
            Console.WriteLine();
        }

        // 下三角行列を表示
        Console.WriteLine("\n下三角行列:");
        for (i = 0; i < m; i++) {
            for (j = 0; j < n; j++) {
                if (i >= j)
                    Console.Write(A[i, j] + "\t");
                else
                    Console.Write("0\t");
            }
            Console.WriteLine();
        }

        Console.ReadLine();
    }
}

なお、元のコードでは下三角行列を表示する内側のループが固定値 3 になっていましたが、任意のサイズの行列に対応できるよう列数 n を使う形に修正しています。また、より大きな数値も扱えるよう、Convert.ToInt16Convert.ToInt32 に変更しました。

実行結果の出力例

たとえば 3×3 の行列として「1, 2, 3, 4, 5, 6, 7, 8, 9」を順に入力すると、コンソールには次のように表示されます。

元の行列:
1    2    3
4    5    6
7    8    9

下三角行列:
1    0    0
4    5    0
7    8    9

まとめ

下三角行列の表示は、「行番号と列番号の大小関係を判定し、主対角線より上の要素を 0 に置き換える」というシンプルな条件分岐だけで実現できます。二重ループによる配列操作と組み合わせれば、任意のサイズの行列に対応したプログラムを簡単に作成できます。

  1. C++で対合行列(インボリュートリー行列)を判定するプログラムの実装方法

    行列 M[r][c] が与えられたとき、「r」は行数、「c」は列数を表します。ここでは r = c、つまり正方行列である場合を考えます。この記事では、与えられた正方行列が対合行列(インボリュートリー行列)であるかどうかを判定する方法を解説します。 対合行列とは 対合行列とは、ある行列を自分自身と掛け合わせたとき、その積が単位行列になるような行列のことです。単位行列 I とは、主対角成分がすべて 1 で、それ以外の要素がすべて 0 である行列を指します。 したがって、行列 M が対合行列であるための必要十分条件は次のように表せます。 M × M = I ここで、M は任意の行列、I は単位行列で

  2. C++でグラフの隣接行列を実装する方法【サンプルコード付き解説】

    隣接行列とは グラフの隣接行列(Adjacency Matrix)とは、V×Vのサイズを持つ正方行列のことです。ここでVはグラフGの頂点数を表します。行列の行と列にはそれぞれ頂点が対応付けられ、頂点iから頂点jへの辺が存在する場合は、i行目・j列目の要素に1が格納されます(重み付きグラフの場合は、辺の重みなどの非ゼロの値が入ります)。辺が存在しない場合は0が格納されます。 なお、無向グラフの場合、辺は双方向につながりを持つため、隣接行列は必ず対称行列になります。つまり、adj[i][j]とadj[j][i]は常に同じ値となります。 隣接行列表現の計算量 空間計算量: 隣接行列にはO(V²)