C :: Aufgabe #5 :: Lösung #3
3 Lösungen

#5
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)
#3

von kathleenw (3600 Punkte)
- 21.07.2020 um 12:15 Uhr

#include <stdio.h> #include <stdlib.h> void zeichne_stamm(int hoehe, int breite_stamm) { int j; for (j=1; j<=(hoehe - breite_stamm)/2; j++) { printf(" "); } for (j=((hoehe - breite_stamm)/2)+1; j<=((hoehe - breite_stamm)/2)+breite_stamm; j++) { printf("#"); } for (j=((hoehe - breite_stamm)/2)+breite_stamm+1; j<hoehe; j++) { printf(" "); } printf("\n"); } void zeichne_baum(int hoehe, int baum[], int hoehe_baum) { int i,j; for (i=1; i<= hoehe_baum; i++) { for (j=1; j<=(hoehe - baum[i])/2; j++) { printf(" "); } for (j=((hoehe - baum[i])/2)+1; j<=((hoehe - baum[i])/2)+baum[i]; j++) { printf("*"); } for (j=((hoehe - baum[i])/2)+baum[i]+1; j<hoehe; j++) { printf(" "); } printf ("\n"); } } int main(void) { int hoehe, i, j, ebenen, z, z_start, hoehe_stamm, hoehe_baum, breite_stamm; printf("Wie hoch soll der Baum werden? Bitte nur Werte größer gleich 3. "); if (scanf("%d", &hoehe)!=1) { printf("Falsche Eingabe.\n"); return EXIT_FAILURE; } if (hoehe<3) { printf("Falsche Eingabe.\n"); return EXIT_FAILURE; } int baum[hoehe+1]; ebenen = hoehe / 3; z_start= hoehe - 1; z = hoehe - 1; hoehe_baum = ebenen * 3; hoehe_stamm = hoehe - (ebenen * 3); if (hoehe > 12) breite_stamm = 5; else breite_stamm = 3; //Breite der Ebenen in Array von 1 bis hoehe-1 for (j = 0; j < hoehe_baum; j = j + 3) { for (i=1; i<=3; i++){ baum[i + j] = hoehe - z; z = z - 2; } z_start = z_start - 2; z = z_start; } //Zeichne Baum zeichne_baum(hoehe, baum, hoehe_baum); //Zeichne Stamm for (i = 0; i<hoehe_stamm; i++) zeichne_stamm(hoehe,breite_stamm); //Sollte kein Stammm gehen weil durch 3 teilbar dann zeichne einen ran if (hoehe_stamm==0) zeichne_stamm(hoehe,breite_stamm); return EXIT_SUCCESS; }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1