1

「境界線」を作成するために多次元配列を使用しています。これを印刷すると、次のようになります。

######
#    #
#    #
#    #
######

これまでのコードで、上、左、下の境界線を作成できます。現時点では、右側の境界線を作成する方法がわかりません。

int[,] array = new int[10, 10];
//Create border around box
//Top
for (int i = 0; i < array.GetLength(0); i++)
{
    array[0, i] = 1;
}

//Bottom
for (int i = 0; i < array.GetLength(0); i++)
{
    array[array.GetLength(0) - 1, i] = 1;
}

//Left
for (int i = 0; i < array.GetLength(0); i++)
{
    array[i, 0] = 1;
}

右側の境界線を作成するにはどうすればよいですか? また、私のコードは改善される可能性があると思います。私は C# が初めてです。

ありがとう

4

3 に答える 3

1

すべての for ループには同じ境界があるため、次のように 1 つのループで実行しないでください。

 for (int i = 0; i < array.GetLength(0); i++)
        {
        //Top
            array[0, i] = 1;
        //Bottom    
        array[array.GetLength(0) - 1, i] = 1;
        //Left
        array[i, 0] = 1;
        // Right
        array[i, array.GetLength(0) - 1] = 1;
        }
于 2013-07-24T01:26:00.067 に答える
1

右の境界線

右の境界線は、対角線 (左上から右下) に沿った下の境界線の反映です。そのため、一番下の描画コードを使用して、x 座標と y 座標を反転させます。それは与えます:

// Right
for (int i = 0; i < array.GetLength(0); i++)
{
    array[i, array.GetLength(0) - 1] = 1;
}

コードの改善

あなたのコードは正しいです。私は2つの改善を提案します:

まず、C# では、配列の作成後に配列の次元を変更することはできず、配列のサイズは 10 であることがわかっていarray.GetLength(0)ますarraySize

const int arraySize = 10;    
int[,] array = new int[arraySize, arraySize];
//Create border around box

//Top
for (int i = 0; i < arraySize; i++)
{
    array[0, i] = 1;
}

//Bottom
for (int i = 0; i < arraySize; i++)
{
    array[arraySize - 1, i] = 1;
}

//Left
for (int i = 0; i < arraySize; i++)
{
    array[i, 0] = 1;
}

// Right
for (int i = 0; i < arraySize; i++)
{
    array[i, arraySize - 1] = 1;
}

二度目の改良。同じループを複数回使用します。それらを一緒にマージしましょう。

const int arraySize = 10;    
int[,] array = new int[arraySize, arraySize];

// Create border around box
for (int i = 0; i < arraySize; i++)
{
    array[0, i] = 1;  // Top
    array[arraySize - 1, i] = 1;  // Bottom
    array[i, 0] = 1;  // Left
    array[i, arraySize - 1] = 1;  // Right
}
于 2013-07-24T01:27:06.030 に答える
0
int x = 10;
int y = 10;
int[,] array = new int[x, y];

  // iterate over the left coordinate
foreach(int i in Enumerable.Range(0, x))
{
  array[i,0] = 1;    //bottom
  array[i,y-1] = 1;  //top
}

  // iterate over the right coordinate
foreach(int i in Enumerable.Range(0, y))
{
  array[0,i] = 1;    //left
  array[x-1,i] = 1;  //right
}
于 2013-07-24T01:40:40.247 に答える