0

ここではまだ C# の一部を学習していますが、for ループを使用してアスタリスクからピラミッドを作成しました。

using System;     

namespace Nimi{      
class Ohjelma{      
static void Main(){ 
for(;;){ 
Console.Write("Anna korkeus: ");     
string eka = Console.ReadLine();     
int luku = int.Parse(eka); 
//First, I made that if the number is 0 or lower, it will ask the number again. 
//Hence the endless loop at start.
if(luku <= 0){ 
    continue; 
} else { 
    for (int i = 0; i < luku; i++ ) 
    { 
                for (int k=i+1; k < luku; k++) 
                   { 
                        Console.Write(" "); 
                } 
                for (int j = 2*i+1; j > 0; j--) 
                { 
                        Console.Write("*"); 
                    } 
            Console.WriteLine(""); 
           } 
        break; 
    } 
} 
} 
} 
}

まだ作成できていないwhileループでこれがどのように機能するかを知りたいという好奇心からです。私が考えた方法は次のとおりです。

using System;     

namespace Nimi{      
class Ohjelma{      
static void Main(){ 
while(true){ 
// The While-loop version of endless loop. Not sure how different it is.
Console.Write("Anna korkeus: ");     
string eka = Console.ReadLine();     
int luku = int.Parse(eka); 
if(luku <= 0){ 
    continue; 
} else {
    int i = 0;
    int j = i * 2 + 1;
    int k = i+1;
    while(i < luku)
    {
        while (j > 0){
            while (k < luku){
            Console.Write(" ");
            k++;
            }
        Console.Write("*");
        j--;
        }
    Console.WriteLine();
    i++;
    }
    break;
    }
} 
} 
} 
}

本当にうまくいかないでください。次のようなもののみを投稿します (値が 4 の場合:

   *

アスタリスク付きのピラミッドを作成するために for ループから while ループに転送する正しい方法は何ですか?

4

3 に答える 3

1

これ

using System;

namespace Nimi
{
    class Ohjelma
    {
        static void Main()
        {
            for (; ; )
            {
                Console.Write("Anna korkeus: ");
                string eka = Console.ReadLine();
                int luku = int.Parse(eka);
                //First, I made that if the number is 0 or lower, it will ask the number again. 
                //Hence the endless loop at start.
                if (luku <= 0)
                {
                    continue;
                }
                else
                {
                    int i = 0;

                    while (i < luku)
                    {
                        int k = i + 1;

                        while (k < luku)
                        {
                            Console.Write(" ");
                            k++;
                        }

                        int j = 2 * i + 1;

                        while (j > 0)
                        {
                            Console.Write("*");
                            j--;
                        }

                        Console.WriteLine("");

                        i++;
                    }

                    break;
                }
            }
        }
    }
}

覚えておいてください: コードが正しくフォーマットされていれば、読みやすくなります。Visual Studio で ^ED を使用してすべてをフォーマットします。

(^ED は CTRL+E を意味し、次に D を意味します (D を使用すると、CTRL は必要ありません。両方の方法で機能します)

于 2013-08-15T17:54:08.673 に答える
1
            for (int j = 2*i+1; j > 0; j--) 
            { 
                    Console.Write("*"); 
                }

になる

{
    int j = 2*i+1;
    while (j > 0)
    {
        Console.Write("*");

        j--;
    }
}

「余分な」中括弧はj、のように、の局所性を保持することに注意してくださいfor()

于 2013-08-15T17:55:01.463 に答える
0
     private static void pyramid()
    {
         int k = 10;
        int j=0;
        while(true)
        {
            int i = 0;
            while(true)
            {
                if (i >= (k - j) && i <= (k + j))
                {
                    Console.Write("*");
                    Console.Write("\t");
                }
                else
                {
                    Console.Write("\t");
                }
                if (i > (j + k))
                {
                    break;
                }
                i++;
            }
            Console.Write("\n");
            if (j == (k - 1))
            {
                break;
            }

                j++;
        }

    }
于 2013-09-28T12:03:58.500 に答える