Problem bei der Programmierung eines Tannenbaums

Hallo liebe Community,

ich habe hier eine Aufgabe in der ich einen Tannenbaum samt Stamm programmieren soll.
Ich habe soweit das Program geschrieben und es funktioniert auch.
Mein Problem ist jedoch, dass der Stamm beim eingeben von höheren Zahlen nicht ganz mittig erscheint. (Bei 7 ist er perfekt in der Mitte)

Hier mein Quellcode:

public static void printCrown(int height){

for (int i = 0; i < height; i++){ //jede Zeile einmal durchlaufen

for (int j = 0; j<height-1-i;j++){ //für das Leerzeichen am Anfang um die # zu zentrieren
System.out.print(" ");
}

for (int k =0; k<i*2+1; k++){
System.out.print("#"); //ausgabe der # und in jeder zeile zwei mehr
}

System.out.println();
}
}

public static void printStem(int height, int width, int gap){

for (int i = 0; i<height/3; i++){

for (int j =0; j<gap/2+1; j++){
System.out.print(" ");
}
for(int k=0; k<width*2/3; k++){
System.out.print("#");
}
System.out.println();
}


}

public static void main (String[]args){
Scanner scan = new Scanner(System.in);
System.out.println("Wie groß soll die Krone werden?");
int hoehe = scan.nextInt();

printCrown(hoehe);
printStem(hoehe,hoehe,hoehe);
}

}



Da mein Professor keinen Lösungsweg angegeben hat, wende ich mich an euch.

Vielen lieben Dank im Voraus.

LG
Java.beginnerHK
 

Anhänge

  • Bildschirmfoto 2020-04-12 um 21.34.30.png
    Bildschirmfoto 2020-04-12 um 21.34.30.png
    14,5 KB · Aufrufe: 6
  • Bildschirmfoto 2020-04-12 um 21.35.20.png
    Bildschirmfoto 2020-04-12 um 21.35.20.png
    20,5 KB · Aufrufe: 6
Ich habe soweit das Program geschrieben und es funktioniert auch.
Mein Problem ist jedoch, dass der Stamm beim eingeben von höheren Zahlen nicht ganz mittig erscheint. (Bei 7 ist er perfekt in der Mitte)
Also funktioniert es nicht 🙂

Code bitte in Code-Tags posten: die drei Punkte neben dem Smiley -> Code -> Java -> inkl. Einrückungen ins Textfeld kopieren.

Bei 7 ist er perfekt in der Mitte
Irgendwer von uns beiden hat einen Knick in der Optik 🙂

Also, schauen wir uns erstmal die Krone an. Diese hat eine Breite von 2h-1. Links und rechts der Mitte der Krone befinden sich also jeweils h-1 "Einheiten" - das wäre der Fall, wenn der Stamm eine Breite von 1 hätte. Damit der Stamm mittig unter der Krone sitzt, muss er folglich eine ungerade Breite haben: 1, 3, 5, usw. Jetzt musst Du noch ein bisschen rechnen und printStem entsprechend anpassen - fertig.
 
Also funktioniert es nicht 🙂

Code bitte in Code-Tags posten: die drei Punkte neben dem Smiley -> Code -> Java -> inkl. Einrückungen ins Textfeld kopieren.


Irgendwer von uns beiden hat einen Knick in der Optik 🙂

Also, schauen wir uns erstmal die Krone an. Diese hat eine Breite von 2h-1. Links und rechts der Mitte der Krone befinden sich also jeweils h-1 "Einheiten" - das wäre der Fall, wenn der Stamm eine Breite von 1 hätte. Damit der Stamm mittig unter der Krone sitzt, muss er folglich eine ungerade Breite haben: 1, 3, 5, usw. Jetzt musst Du noch ein bisschen rechnen und printStem entsprechend anpassen - fertig.
Sagen wir nahezu in der Mitte 😀
Alles klar ich werde nochmal ein bisschen rum rechnen vielleicht bekomme ich das ja dann irgendwie hin. Danke für deine Hilfe🙂
 
Also ich habe noch nie gehört, schau mal welch schöne Kronen die Bäume haben!, darum frage ich. 😀

Also es ist ja schon fast alles richtig, der Rest ist nur noch etwas Indexschubserei.
 
Tatsächlich ist die Krone ja auch nur der oberste Teil des Baums 🙂 Auch Zopf oder Wipfel genannt.
Echt jetzt? Ich bin eher ein Anhänger dieser Definition: "Benadelter bzw. belaubter Teil des Baumes, der sich zwischen dem Kronenansatz (erster grüner Ast, ohne Berücksichtigung der Klebäste) und dem Baumwipfel befindet."
 
Da gibt es wohl verschiedene Verwendungen des Begriffs, vermutlich umgangssprachlich und auch regional verschieden. Offiziell könntest Du mit Deiner Definition allerdings Recht haben 🙂
 
Da gibt es wohl verschiedene Verwendungen des Begriffs, vermutlich umgangssprachlich und auch regional verschieden. Offiziell könntest Du mit Deiner Definition allerdings Recht haben 🙂
Bei uns wird der Begriff zumindest so verwendet, wie ich es beschrieben habe. Allerdings bin ich aber kein Biologe, darum weiß ich auch nicht, ob das die offizielle, wissenschaftlich korrekte Definition ist.
 

Zurück
Oben