Tannenbaum

JSJS

Neues Mitglied
Der Stamm ist bis zu einer Höhe von 9 genau ein Zeichen breit. Zwischen 10 und 19 ist er drei Zeichen breit, zwischen 20 und 29 ist er fünf Zeichen breit, usw.

Könnt Ihr uns weiterhelfen?





class Tannenbaum {
public static void main(String[] args) {
int hoehe=Integer.parseInt(args[0]);
int zeile=0;
int spalte=0;
int stamm=(hoehe%10*2+1);


for (zeile=1; zeile<hoehe; zeile++) {

for (spalte=1; spalte <= hoehe-zeile; spalte++)
System.out.print(" ");

for (spalte=1; spalte<=(2*zeile-1); spalte++)
System.out.print("*");
System.out.println();
}
for (zeile=1; zeile<hoehe; zeile++){




System.out.print(" ");
System.out.println("I")


}

}
 

TKausL

Top Contributor
Ich verstehe nicht:
1. Wer ist wir? Eine Hausaufgabengruppe?
2. Warum überließt jeder den FETTEN ROTEN Hinweis beim Antworten mit den Java-Tags?
3. Wie der Baum aussehen soll habe ich nach deiner erklärung leider nicht verstanden
4. Was tut den dein Code was er nicht tuen soll, bzw was tut er nicht was er tun soll?
 

Landei

Top Contributor
5. Warum muss jeder Schüler unbedingt einen Tannenbaum zeichnen?
6. Warum glaubt jeder Schüler, er wäre der erste, der einen Tannenbaum zeichnen muss?
7. Wieso gibt es einen Such-Button im Forum, wenn der sowieso nicht genutzt wird?
 
N

no0b

Gast
Bin zwar kein Designer, aber so geht's:

Java:
    public static void main(String[] args) {
        for (int i = 0; i < 4; i += 2) {
            print(7, 2);
        }
        for (int i = 7; i >= 0; i--) {
            print(7 - i, i * 2 + 2);
        }
    }

    private static void print(int leer, int sternchen) {
        char[] c = new char[leer];
        Arrays.fill(c, ' ');
        System.out.print(new String(c));

        c = new char[sternchen];
        Arrays.fill(c, '*');
        System.out.print(new String(c));

        System.out.println();
    }

Steht nur noch auf dem Kopf. ;)
 
N

no0b

Gast
Gerade noch ein bisschen gefummelt, das geht natürlich auch für Tannenbäume beliebiger Höhe und (Stamm)-Breite:

Java:
    public static void main(String[] args) {
        final int breite = 2;
        final int höheee = 20;
        // Stamm 1/5, Baum 4/5 :-)
        for (int i = 0; i < höheee / 5; i++) {
            print(höheee / 5 * 4 - breite / 2, breite);
        }
        for (int i = 0; i < höheee / 5 * 4; i++) {
            print(i, höheee / 5 * 8 - i * 2);
        }
    }

Nur verkehrtherum wird noch gezeichnet, aber mit ein bisschen nachdenken kriegt ihr das schon hin. :)
 
P

pappawinni

Gast
Hier ein Baum..
und dort ein Baum und dazwischen Zwischenraum.

Java:
        int hoehe = 13;
        String strV,strH;
        int hh,vv,breite,oberlaenge;
        oberlaenge = 4 * hoehe / 5; 
        breite = 2 * oberlaenge - 1;
        for (int i = 0; i < oberlaenge; i++) {
        	vv = 2*i + 1;
        	hh = (breite - vv)/2;
            strH = String.format("%"+( hh + 1 )+"s","").replace(' ','·').substring(1);
            strV = String.format("%"+( vv )+"s","").replace(' ','*');
            System.out.println(strH+strV+strH);
        }
        // Stamm
    	vv = 1 + 2 * ( breite / 10 );
    	hh = (breite - vv) / 2;
        strH = String.format("%"+( hh )+"s","").replace(' ','·');
        strV = String.format("%"+( vv )+"s","").replace(' ','¤');
        for (int i = 0; i < hoehe-oberlaenge; i++) {
            System.out.println(strH+strV+strH);
        }
 

bwbg

Mitglied
Da die UN-Klimakonferenz in Doha (wie erwartet) wieder ohne Ergebnis zu Ende gehen wird, sollte man darüber nachdenken, auch mal Palmen zeichnen zu lassen.

Grüße ... bwbg
 
T

Trolllllll

Gast
Mhh die Globale Erderwährmung heißt leider nicht, das es eine Lokale Erderwährmung gibt, das heißt, hier kann es kälter werden aber Global wurde es wärmer ;-) Aöso sollte man mit den Aussagen vorsichtig sein, auch wenn ich für das Ostseebad Osnabrück bin :)
 

Neue Themen


Oben