はじめに
非常に多くの場合、情報を扱う場合、表形式のデータを処理する必要があります。最近のプログラムは、そのようなデータを扱うことが非常に多いです。最も単純な例は、三目並べ、チェス、チェッカーなどの市松模様のボード上でゲームをプログラミングすることです。
数学では、このような構造は行列と呼ばれます。
Matrix は、同じタイプの要素 (数字、文字列など) で構成される長方形のテーブルです。< /スパン>
C# のこのようなデータは、2 次元配列 (「配列の配列」) として格納および処理できます。 .
表内のデータを処理するには、各セル(セル)の状態を記憶する必要があります。各セルには行番号と列番号という 2 つの数字が含まれています。
行列では、各要素には 2 つのインデックスがあります。最初に行番号が示され、次に列番号が示されます。行と列の番号はゼロから始まります 。
たとえば、要素 A[1, 2] は、2 行目の 3 列目にある要素です。
通常の配列と同様に、行列を操作するには、行列の作成方法を学ぶ必要があります。入力、処理、表示。
マトリックスを作成します。スパン >
のインメモリ マトリックスを作成できますいくつかの初期値で満たされた所定のサイズ。
int[,] array = new int[4, 2]; // 4 行 2 列
マトリックスを作成したら、任意の値を入力できます。各要素には 2 つのインデックスがあるため、ネストされたループを使用する必要があります
<プレ>
for (int i=1; i <= N, i++) { / / N - 行数
for (int j=1; j <= N, j++) { // M は列数
A[i, j] = ...
}
}コード>
マトリックスを表示しています。
通常、リストの処理と表示には 2 つのネストされたループが使用されます。最初のループは行番号にあり、2 番目のループは行内の要素にあります。 マトリックスを行ごとに画面に出力するには、1 行内で数字をスペースで区切り、次のフラグメントを記述する必要があります:
<プレ>
for (int i=1; i <= N, i++) {
for (int j=1; j <= N, j++) {
Console.Write(A[i, j] + " ");
}
Console.WriteLine(); // 新しい行に移動
}
同じことができますが、インデックス ( foreach )。これを実装するサブルーチンを自分で作成してみてください。
|
キーボードからの値をマトリックスに入力します。
プログラムが次の形式で 2 次元配列を入力として受け取るようにします < em>n em> 文字列、それぞれにスペースで区切られた m 数字が含まれます。それらを数える方法は?たとえば、次のようになります:
<プレ>
int[,] array = new int[n,m]; // 入力する配列を作成します
for (int i = 0; i < n; i++)
{
string A = Console.ReadLine(); // 読み込まれた行
int[] curr = A.Split(' ').Select(int.Parse).ToArray(); // この文字列を 1 次元配列 curr に変換します
for (int j = 0; j < m; j++)
{
array[i, j] = curr[j]; // 必要な配列の文字列に curr 配列の値を入力します
}
}スパン>
|
行列の各要素には 2 つのインデックスがあるため、ネストされたループを使用して反復処理する必要があります。すべての要素。 >
通常、行列は行ごとに反復されます。外側のループは行インデックスを反復し、内側のループは列インデックスを反復します。
ただし、必要に応じて、行列に対して列ごとに反復処理を行うと、サイクルが逆になります。
|