C# :: Aufgabe #15 :: Lösung #1
6 Lösungen

#15
Ausgabe Weihnachtsbaum
Anfänger - C#
von Gustl
- 07.12.2012 um 18:44 Uhr
Schreiben Sie ein Konsolenprogramm welches einen Weihnachtsbaum ausgibt.
Vor der Ausgabe soll noch die Höhe des Weihnachtsbaum abgefragt werden. (MIN 3)
Der Weihnachtsbaum soll bei einer Höheneingabe von 10 folgendermaßen aussehen:
Die Schwierigkeit besteht in den Stufenabschnitten der Tanne. Die Zeile die die meisten Sterne enthält sollte natürlich dann auch die letzte sein, also muss das Programm vielleicht bei einer zu großen Höheneingabe das Zeichnen der Sterne abbrechen und dann den Stamm ausgeben. (So wie bei diesem Beispiel, angegeben ist 10 aber der Baum hat nur 10 Reihen, ohne Baumstamm)
Vor der Ausgabe soll noch die Höhe des Weihnachtsbaum abgefragt werden. (MIN 3)
Der Weihnachtsbaum soll bei einer Höheneingabe von 10 folgendermaßen aussehen:
Konsolenausgabe:
*
***
*****
***
*****
*******
*****
*******
*********
###
Die Schwierigkeit besteht in den Stufenabschnitten der Tanne. Die Zeile die die meisten Sterne enthält sollte natürlich dann auch die letzte sein, also muss das Programm vielleicht bei einer zu großen Höheneingabe das Zeichnen der Sterne abbrechen und dann den Stamm ausgeben. (So wie bei diesem Beispiel, angegeben ist 10 aber der Baum hat nur 10 Reihen, ohne Baumstamm)
#1

von pocki (4190 Punkte)
- 18.12.2012 um 19:15 Uhr
Hier ist meine Lösung.
Da ich mit der letzten Zeile der Beschreibung nichts anfangen konnte, wird bei mir der Baum immer in vielfaches von 3 Reihen plus Stamm ausgegeben.
Bsp: bei 11 = 9 Reihen '*' plus 2 Reihen Stamm, bei 10 = wie oben 9 Reihen '*' plus 1 Stamm, bei 9 = 9 Reihen '*' plus 1 Stamm.
Außerdem kann ein Baum mit 100 Zeilen ohne Probleme ausgegeben werden, da automatisch der Baum nach rechts rückt.
C#-Code
Da ich mit der letzten Zeile der Beschreibung nichts anfangen konnte, wird bei mir der Baum immer in vielfaches von 3 Reihen plus Stamm ausgegeben.
Bsp: bei 11 = 9 Reihen '*' plus 2 Reihen Stamm, bei 10 = wie oben 9 Reihen '*' plus 1 Stamm, bei 9 = 9 Reihen '*' plus 1 Stamm.
Außerdem kann ein Baum mit 100 Zeilen ohne Probleme ausgegeben werden, da automatisch der Baum nach rechts rückt.

using System; namespace UE15 { internal class Program { private static void Main(string[] args) { int reihen = 10; //Maximale Anzahl der Sterne/Reihe im Baum int max_zeichen = 3 + 2*reihen/3; int count = 1; for (int i = 0; i < reihen/3; i++) { for (int j = 0; j < 3; j++) { //Eine Sternzeile erstellen string sternzeile = InTheMiddle(string.Empty.PadRight(count, '*'), max_zeichen); Console.WriteLine(sternzeile); count += 2; } count -= 4; } //Baumstamm hat mindestens eine Höhe von 1 int stammhoehe = reihen%3 == 0 ? 1 : reihen%3; for (int i = 0; i < stammhoehe; i++) { Console.WriteLine(InTheMiddle("###", max_zeichen)); } Console.ReadKey(); } /// <summary> /// Der übergebene string wird in die Mitte der Zeile geschoben. /// </summary> /// <param name="input">Zeileninhalt</param> /// <param name="rowlength">Zeilenlänge</param> /// <returns></returns> private static string InTheMiddle(string input, int rowlength) { int length = input.Length; int padding = (rowlength - length)/2 + 1; return input.PadLeft(padding + length, ' '); } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1