C :: Aufgabe #5 :: Lösung #1

3 Lösungen Lösungen öffentlich
#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:

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
vote_ok
von devnull (8870 Punkte) - 29.06.2013 um 21:03 Uhr
Quellcode ausblenden C-Code
/****************************************
 * baum.c     Weihnachtsbaum
 * 
 * OS     :   GNU/Linux
 * compile:   gcc -Wall -o baum baum.c
 * example:   ./baum 10
 *
 * devnull    29-06-2013                
 ****************************************/
#include <stdlib.h>
#include <stdio.h>

int width( int row )
{
  return ((row-1)/3 + (row-1)%3 )*2	+ 1;
}

void print_row( int row, int mrow )
{
	int i,mtree,wtree,wleft;
	char ctree;

    mtree = (mrow>3)?(mrow-(mrow-1)%3-1):mrow;
	ctree = (row>mtree)?'#':'*';
	wtree = (row>mtree)?(mrow<7?1:3):width(row);
	wleft = (width(mtree)-wtree)/2 + 1;
	for (i=1;i<=wleft;i++) printf(" ");  
	for (i=1;i<=wtree;i++) printf("%c",ctree);  
	printf("\n"); 
}

/* main */
int main( int argc, char **argv )
{
	int maxrow=10;
	int row;

    if (argc>1) {
		maxrow = atoi(argv[1]);
		maxrow = (maxrow<3)?3:maxrow;
	}
	for (row=1;row<=maxrow;row++) 
		print_row(row,maxrow);
	return 0;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1808888

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.