3

4 つの異なる三角形パターンを並べて表示するのに問題があります。これはコンソール アプリケーション プログラムです。

これはまさに、ネストされた for ループを使用して達成しようとしているものです。

*         ********************         *
**        *********  *********        **
***       ********    ********       ***
****      *******      *******      ****
*****     ******        ******     *****
******    *****          *****    ******
*******   ****            ****   *******
********  ***              ***  ********
********* **                ** *********
***********                  ***********

個々のパターンはすでに動作していますが、もちろんそれらは次々と現れます。

using System;

class Assignment5
{
    static void Main()
    {
        for (int i = 1; i <= 10; i++) // Outer loop for number of rows
        {
            for (int j = 1; j <= i; j++) // Inner loop for number of stars
            {
                Console.Write("*");
            }
            Console.WriteLine();
        } // End First Pattern

        for (int i = 10; i >= 1; i--) // Outer loop for number of rows
        {
            for (int j = 1; j <= i; j++) // Inner loop for number of stars
            {
                Console.Write("*");
            }
            Console.WriteLine();
        } // End Second Pattern

        for (int i = 10; i >= 1; i--) // Outer Loop for number of rows
        {
            for (int j = 1; j <= 10 - i; j++)         //Inner loop for number of spaces
            {
                Console.Write(" ");
            }
            for (int k = 1; k <= i; k++)  //Secondary inner loop for number of stars
            {
                Console.Write("*");
            }
            Console.WriteLine();

        } // End Third Pattern

        for (int i = 1; i <= 10; i++)               //Outer Loop for number of rows
        {
            for (int j = 1; j <= 10 - i; j++)         //Inner loop for number of spaces
            {
                Console.Write(" ");
            }
            for (int k = 1; k <= i; k++)  //Secondary inner loop for number of stars
            {
                Console.Write("*");
            }
            Console.WriteLine();
        } // End Fourth Pattern

        Console.WriteLine("Press Enter for Part 2 of this Program");
        Console.ReadKey();
        Console.Clear();

    } // End main function


} // End class Assignment5
4

7 に答える 7

1

これにより、必要な結果が得られます。

using System.IO;
using System;

class Program
{
    static void Main()
    {
        for (int i = 1; i <= 10; i++) // Outer loop for number of rows
        {
            for (int j = 1; j <= i; j++)
            {
                Console.Write("*");
            }
            for (int k = 10; k >= i; k--)
            {
                Console.Write(" ");
            }            
            for (int l = 10-i; l >= 0; l--)
            {
                Console.Write("*");
            }
            for (int k = 0; k <= i*2; k++) 
            {
                Console.Write(" ");
            }
            for (int k = 10-i; k >= 0; k--)
            {
                Console.Write("*");
            }
            for (int k = 10; k >= i; k--) 
            {
                Console.Write(" ");
            }
            for (int j = 1; j <= i; j++)
            {
                Console.Write("*");
            }
            Console.WriteLine();
        } 

        Console.ReadKey();
        Console.Clear();

    }
}
于 2013-08-07T08:09:51.410 に答える
0

別の解決策: すべて '*' で配列を作成し、それを表示します。

行、列、パターン番号の 3 次元配列を使用しました。
C および C# の世界では配列は 0 ベースであるため、0 < x < 10 のすべてをシフトしました。
配列の「空白」スペースも埋めていることに注意してください。

static void Main()
{
    var chars = new char[10, 10, 4];

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 0; j < 10; j++)
        {
            if (i >= j)
            {
                chars[i, j, 0] = '*';
            }
            else
            {
                chars[i, j, 0] = ' ';
            }
        }
    } // End First Pattern

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 0; j < 10; j++)
        {
            if (i <= 9 - j)
            {
                chars[i, j, 1] = '*';
            }
            else
            {
                chars[i, j, 1] = ' ';
            }
        }
    } // End Second Pattern

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 0; j < 10; j++)
        {
            if (i <= j)
            {
                chars[i, j, 2] = '*';
            }
            else
            {
                chars[i, j, 2] = ' ';
            }
        }
    } // End Third Pattern

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 0; j < 10; j++)
        {
            if (i >= 9 - j)
            {
                chars[i, j, 3] = '*';
            }
            else
            {
                chars[i, j, 3] = ' ';
            }
        }
    } // End Fourth Pattern

    for (int i = 0; i < 10; i++)
    {
        for (int k = 0; k < 4; k++)
        {
            for (int j = 0; j < 10; j++)
            {
                Console.Write(chars[i, j, k]);
            }
        }

        Console.WriteLine();
    }

    Console.WriteLine("Press Enter for Part 2 of this Program");
    Console.ReadKey();
    Console.Clear();

} // End main function

先ほどお話ししたように、配列の作成中に空のスペースをスペースで埋めました。スキップして、代わりにConsole.Write にあるスペースchars[i, j, k] == 0を次のように置き換えることもできました。' '

static void Main()
{
    var chars = new char[10, 10, 4];

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 0; j < 10; j++)
        {
            if (i >= j)
            {
                chars[i, j, 0] = '*';
            }
        }
    } // End First Pattern

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 0; j < 10; j++)
        {
            if (i <= 9 - j)
            {
                chars[i, j, 1] = '*';
            }
        }
    } // End Second Pattern

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 0; j < 10; j++)
        {
            if (i <= j)
            {
                chars[i, j, 2] = '*';
            }
        }
    } // End Third Pattern

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 0; j < 10; j++)
        {
            if (i >= 9 - j)
            {
                chars[i, j, 3] = '*';
            }
        }
    } // End Fourth Pattern

    for (int i = 0; i < 10; i++)
    {
        for (int k = 0; k < 4; k++)
        {
            for (int j = 0; j < 10; j++)
            {
                if (chars[i, j, k] != 0)
                {
                    Console.Write(chars[i, j, k]);
                }
                else
                {
                    Console.Write(' ');
                }
            }
        }

        Console.WriteLine();
    }

    Console.WriteLine("Press Enter for Part 2 of this Program");
    Console.ReadKey();
    Console.Clear();

} // End main function

そこから を削除しifて の一部にすることforもできますが、まったく判読できなくなります...

static void Main()
{
    var chars = new char[10, 10, 4];

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 0; j <= i; j++)
        {
            chars[i, j, 0] = '*';
        }
    } // End First Pattern

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 0; j < 10 - i; j++)
        {
            chars[i, j, 1] = '*';
        }
    } // End Second Pattern

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = i; j < 10; j++)
        {
            chars[i, j, 2] = '*';
        }
    } // End Third Pattern

    for (int i = 0; i < 10; i++) // Outer loop for number of rows
    {
        for (int j = 9 - i; j < 10; j++)
        {
            chars[i, j, 3] = '*';
        }
    } // End Fourth Pattern

    for (int i = 0; i < 10; i++)
    {
        for (int k = 0; k < 4; k++)
        {
            for (int j = 0; j < 10; j++)
            {
                if (chars[i, j, k] != 0)
                {
                    Console.Write(chars[i, j, k]);
                }
                else
                {
                    Console.Write(' ');
                }
            }
        }

        Console.WriteLine();
    }

    Console.WriteLine("Press Enter for Part 2 of this Program");
    Console.ReadKey();
    Console.Clear();

} // End main function
于 2013-08-07T08:11:25.360 に答える