Weihnachtsbaum



  • Hallo Leute ich bin der Neue, ich komme jetzt häufiger.
    Mein fast erstes „Programm“.
    Ich wollte mir einen Weihnachtsbaum basteln, aber
    der recht Winkel am Baum gefällt mir nicht.
    Wie oder was mache ich verkehrt, was fehlt?
    Kann mir jemand weiter helfen.

    #include<iostream>

    using namespace std ;

    int main (void)
    {

    int leerzeichen =20, sternzahl =1 ,i, zeile;

    for ( zeile =0; zeile <10; zeile ++)

    {
    for ( i =1 ; i <= leerzeichen; i++)cout << " ";

    {
    for ( i =1 ; i <= sternzahl; i++) cout << "*";

    sternzahl +=2;

    }

    cout << "\n" ;

    }

    return 0;
    }

    Ich hoffe die Frage ist brauch bar :p und danke für Anregungen



  • du musst "leerzeichen" immer um 1 verringern wenn du "sternzahl" um 2 erhöhst.



  • Hi,
    ist folgende Formatierung ok?
    Oder kann ich mir Tabs sparen?(in den meisten editoren sieht man ja wann was aufhoert/startet)

    #include<iostream>
    
    using namespace std ;
    
    int main (void)
    {
        int leerzeichen =20, sternzahl =1 ,i, zeile;
            for ( zeile =0; zeile <10; zeile ++)
                {
                    for ( i =1 ; i <= leerzeichen; i++)cout << " ";
                    {
                        for ( i =1 ; i <= sternzahl; i++) cout << "*";
                            sternzahl +=2;
                            leerzeichen -=1;
                    }
                    cout << "\n" ;
                }
        return 0;
    }
    

    Btw cooler Baum 😃



  • @sinnlos123:
    najaaaa, würde ich nicht so machen. die scope-klammer bei zeile 11 z.b. ist total verwirrend, man denkt sie gehört zum for aus zeile 10, tut sie aber nicht, denn hinter dem for ist noch ein cout (welches auch eine eigene klammer bekommen sollte).

    meine implementierung:

    #include<iostream>
    int main()
    {
    	const std::size_t RowCount = 10;
    	for(std::size_t Row = 0; Row < RowCount; ++Row)
    	{
    		for(std::size_t Spaces = 0; Spaces < RowCount - Row - 1; ++Spaces)
    		{
    			std::cout << ' ';
    		}
    		for(std::size_t Tree = 0; Tree < Row * 2 + 1; ++Tree)
    		{
    			std::cout << '*';
    		}
    		std::cout << '\n';
    	}
    }
    

    natürlich könnte man das ganze kürzer schreiben indem man temporäre strings mit dem fill-ctor erstellt und ausgibt...



  • [quote="asfasf"]du musst "leerzeichen" immer um 1 verringern wenn du "sternzahl" um 2 erhöhst.[/quote]
    Danke 🙂 , es läuft gut. Der andere Code ist mir noch zu hoch.


Anmelden zum Antworten