Verschachtelte Schleifen 2

Anhand dieses Sägezahnbeispiels wollen wir unser Programm schrittweise aufbauen.

Aufgrund der Eingabe zweier Werte (1.Wert = Anzahl der Sterne, 2.Wert = Anzahl der Durchgänge) sollen Sterne "*" ausgegeben werden, die einen Sägezahn entsprechen.

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

usw...

 

Zuerst schreiben wir eine Schleife, welche die Ausgabe eines "*" fünfmal wiederholt.

for (i = 1; i <= sterne; i++)
    Console.WriteLine("*");

 

Ausgabe:

*
*
*
*
*

 

Nun soll unser Programm nach jeden Schleifendurchlauf einen Stern mehr erzeugen. Dazu bauen wir eine Schleife in unsere Schleife ein, die jeden Schleifendurchlauf zählt und die Ausgabe um einen * erhöht.

for (i = 1; i <= sterne; i++)
{
    for (k = 1; k <= i; k++)
    Console.WriteLine("*");
}

 

Ausgabe:

*
*
*
*
*
*
*
*
*
*

 

Das hat noch nicht so ganz die Form, die wir wollen. Unsere Sterne werden bei jedem Schleifendurchlauf erhöht, aber es passiert auch jedes mal ein Zeilenvorschub.
Hier ändern wir einfach unser Console.WriteLine("*");in Console.Write("*"); und fügen Console.WriteLine(); hinzu. (Sonst würden alle * in einer Reihe sein, da nach Ablauf der mittleren Schleife kein Zeilenvorschub passiert).

for (i = 1; i <= sterne; i++)
{
    for (k = 1; k <= i; k++)
    Console.Write("*");
Console.WriteLine()
}

 

Da wir nun möchten, dass die Anzahl der Durchgänge und die Anzahl der Sterne als Eingabe abgefragt werden, erweitern wir unser Programm mit den Eingabeabfragen und fügen eine weitere Schleife für die Anzahl der Durchgänge hinzu.

namespace saegezahn
{
    class Program
    {
        static void Main(string[] args)
        {
            int a,i,k,sterne,durchgaenge;  

            Console.WriteLine("Anzahl der Sterne?\n");
            sterne = Convert.ToInt16(Console.ReadLine());

            Console.WriteLine("Anzahl der Durchgänge?\n");
            durchgaenge = Convert.ToInt16(Console.ReadLine());

            Console.WriteLine("\n");

            for (a = 1; a <= durchgaenge; a++)
            {
                for (i = 1; i <= sterne; i++)
                {
                    for (k = 1; k <= i; k++)
                        Console.Write("*");
                    Console.WriteLine();
                }
            }
            Console.ReadLine();
        }
    }
}

 

Ausgabe (zum Beispiel für Sterne = 10 und Durchgänge = 2):

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