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.ToInt16 を Convert.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 に置き換える」というシンプルな条件分岐だけで実現できます。二重ループによる配列操作と組み合わせれば、任意のサイズの行列に対応したプログラムを簡単に作成できます。
-
C++で対合行列(インボリュートリー行列)を判定するプログラムの実装方法
行列 M[r][c] が与えられたとき、「r」は行数、「c」は列数を表します。ここでは r = c、つまり正方行列である場合を考えます。この記事では、与えられた正方行列が対合行列(インボリュートリー行列)であるかどうかを判定する方法を解説します。 対合行列とは 対合行列とは、ある行列を自分自身と掛け合わせたとき、その積が単位行列になるような行列のことです。単位行列 I とは、主対角成分がすべて 1 で、それ以外の要素がすべて 0 である行列を指します。 したがって、行列 M が対合行列であるための必要十分条件は次のように表せます。 M × M = I ここで、M は任意の行列、I は単位行列で
-
C++でグラフの隣接行列を実装する方法【サンプルコード付き解説】
隣接行列とは グラフの隣接行列(Adjacency Matrix)とは、V×Vのサイズを持つ正方行列のことです。ここでVはグラフGの頂点数を表します。行列の行と列にはそれぞれ頂点が対応付けられ、頂点iから頂点jへの辺が存在する場合は、i行目・j列目の要素に1が格納されます(重み付きグラフの場合は、辺の重みなどの非ゼロの値が入ります)。辺が存在しない場合は0が格納されます。 なお、無向グラフの場合、辺は双方向につながりを持つため、隣接行列は必ず対称行列になります。つまり、adj[i][j]とadj[j][i]は常に同じ値となります。 隣接行列表現の計算量 空間計算量: 隣接行列にはO(V²)