2

ネストされたforループを使用して2次元データをレンダリングする方法を理解するために、C#のこのセグメントを作成しました。

出力は次のようになります。

████
███
██
█

上の4ブロックが下にレンダリングされるようにしたいのですが、基本的には逆の順序でステップが上になります。ただし、コンソールウィンドウは下向きにしかレンダリングされないため、従来の考え方は正しくありません。以下は私のコードです。

static void Main(string[] args)
    {
        int i = 0;
        int j = 0;

        for (i = 0; i < 4; i++) 
        {
            Console.Write('\n');
            for (j = i; j < 4; j++) 
            {
                Console.Write("█");
            }
        }
        Console.ReadKey();
    }

これは私が出力をどのように見せたいかです。

    █
   ██
  ███
 ████
4

4 に答える 4

4

ループ状態をinremantからdecremantににする必要があります。

for (i = 0; i < 4; i++) 
{
    Console.Write('\n');
    for (j = i; j >= 0; j--) 
    {
        Console.Write("█");
    }
}

出力は次のようになります。

ここに画像の説明を入力してください

これがDEMOです。

更新:気が変わったので、列ごとにスペースを追加する必要があります(列番号はi4 - 1

   public static void Main(string[] args)
    {
        int i = 0;
        int j = 0;
        for ( i = 0; i < 4; i++ )
        {
            for ( j = 0; j < 4; j++ )
            {
                if ( j < 3 - i )
                    Console.Write(" ");
                else
                    Console.Write("█");
            }
            Console.Write('\n');
        }

        Console.ReadKey();
    }

ここに画像の説明を入力してください

これがデモです。

于 2013-02-28T16:30:02.593 に答える
2
class Program
{
    const int Dimension = 4;

    static void Main(string[] args)
    {
        char[] blocks = new char[Dimension];
        for (int j = 0; j < Dimension; j++)
            blocks[j] = ' ';

        for (int i = 0; i < Dimension; i++)
        {
            blocks[Dimension - i - 1] = '█';

            for (int j = 0; j < Dimension; j++)
                Console.Write(blocks[j]);

            Console.WriteLine();
        }
        Console.ReadKey();
    }
}
于 2013-02-28T16:44:19.493 に答える
2

する必要があります:

  for (j = 3 - i; j < 4; j++)
  {
       Console.Write("█");
  }
于 2013-02-28T16:32:46.630 に答える
1

最も簡単な方法は次のとおりです。内部ループの状態を逆にして、カウンターをインクリメントするのではなくデクリメントします。

    for (i = 0; i < 4; i++) 
    {
        Console.Write('\n');
        for (j = i; j >= 0; j--) 
        {
            Console.Write("█");
        }
    }
    Console.ReadKey();

戻る:

█
██
███
████

そして、右から左へのバージョンの場合:

    for (i = 0; i < 4; i++) 
    {
        for(j = 0; j < 4; j++)
        {
            if(j < 3 - i)
                Console.Write(" ");
            else
                Console.Write("█");
        }
        Console.Write('\n');
    }
    Console.ReadKey();

結果:

   █
  ██
 ███
████
于 2013-02-28T16:27:38.967 に答える