Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Wheinachtsbaum (http://www.informatikerboard.de/board/thread.php?threadid=1321)


Geschrieben von JKU11 am 15.11.2012 um 00:18:

  Wheinachtsbaum

Meine Frage:
Hallo. Habe hier eine Übungsaufgabe, finde aber keinen Lösungsansatz :

Write a program to print a ?tree? by
stacking number pyramids. Your algorithm will stack (n-1) pyramids,
where each pyramid has an increased height, and ?n? is entered by the
user. Each element of the pyramid shall be a 2n result, restarting with 21 in each row and incrementing n until the middle of the row is reached.

Then n is decreased until 21 is reached again at the end of the row.
Note that ?n? is also the maximum number of rows in the last pyramid of
the tree. The image on the left side shows a maximum of 5 rows for the
last pyramid ? find appropriate limits for the user input. Limit the user
input appropriately to achieve a Christmas Tree fitting to the max width
of your console window.


Meine Ideen:
Wie gesagt habe ich leider keine Ahnung wie ich anfangen soll. Nehme mal an, dass es nur mit Arrays realisierbar ist.

Und wenns geht bitte keine fertigen Codes nur mal ein paar Ideen wie ich vorgehen soll. smile

Beste Grüße



Geschrieben von Karlito am 15.11.2012 um 09:09:

 

Hallo,

1. Schau mal wie breit der Baum maximal in Abhängigkeit von der Höhe werden kann.
2. wie kannst du eine einzelne Ebene so ausgeben, dass sie zentriert ist (in Abhängigkeit von einer Zeilenbreite)
3. Wie kannst du eine einzelne Stufe des Baumes ausgeben

Und dann alles zusammenfügen Augenzwinkern

VG,

Karlito



Geschrieben von JKU11 am 15.11.2012 um 20:00:

 

Alsooo:

Die Höhe des Baumes errechne ich mir mit (2+3+4...+n) Zeilen
Die Breite mit (n*2)-1

Also jede Pyramide: fängt mit 2 an und erhöhe um 2 solange 2^n erreicht, anschließend subtrahiere bis Ergebnis 2 ist.
Das wäre mein Algorithmus für die letzte Zeile jeder Pyramide.

Das Problem ist halt, dass ich nicht genau weiß wie ich das ganze mit Arrays realisieren soll .

MfG



Geschrieben von Karlito am 15.11.2012 um 20:05:

 

Naja, Du schreibst die Werte in ein Array und gibst dieses aus? Welche Sprache sollst du denn verwenden?

VG,

Karlito



Geschrieben von JKU11 am 15.11.2012 um 21:37:

 

Java.

Haben mit den Arrays noch nicht viel durch genommen, daher tu ich mir ziemlich schwer :/



Geschrieben von Karlito am 15.11.2012 um 21:51:

 

Mach halt mal einen Vorschlag, wie eine Methode aussähe, welche eine Zeile des Baumes in einem Array erzeugt...

VG,

Karlito



Geschrieben von JKU11 am 15.11.2012 um 23:40:

 

also hab hier den code. Er gibt mir aber was komischer raus und hab auch ne Fehlermeldung dazu. Nach meinem "Schreibtischtest" sollte eigentlich alles funktionieren. verwirrt

public class Pyr {

public static void main(String[] args) {

int n,x;
int b;
n=Input.readInt();
int a=(2*n)-1;
int [] Zeile;
Zeile = new int[a];

for (int i=0; i<=(2*n-1);i++) {
Zeile[i]=b;
System.out.print(b);
b=b*2;
if (b>=Math.pow(2.0, n)) {
for (x=n-1; x>=1; ) {
b=b-Math.pow(2.0, x);
System.out.print(b);
x=x-1;
}
}
}
}
}


Er gibt mir folgendes auf der Konsole aus:

Input : 3
2481632Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Pyr.main(Pyr.java:13)
Drücken Sie eine beliebige Taste . . .

Keine Ahnung was da gemeint ist, die Zahlen stimmen ja nach der 8 auch nicht mehr



Geschrieben von Karlito am 16.11.2012 um 00:11:

 

Schau dir mal den Schleifenkopf an...



Geschrieben von JKU11 am 16.11.2012 um 00:32:

 

den ersten?



Geschrieben von Karlito am 16.11.2012 um 00:38:

 

Jap. Brauchst du wirklich so viele Schleifendurchläufe?



Geschrieben von JKU11 am 16.11.2012 um 00:54:

 

hab jetzt den ersten Schleifenkopf durch: for (i=0; i<=n-1;i++) ersetzt.

Kommt aber noch immer dasselbe raus :/



Geschrieben von JKU11 am 16.11.2012 um 01:08:

 

.



Geschrieben von Karlito am 16.11.2012 um 01:27:

 

Hallo.

Nein, ich finde sogar, dass deine IDE zu wenig sagt großes Grinsen



Geschrieben von JKU11 am 16.11.2012 um 01:44:

 

großes Grinsen jetzt kommt wenigstens keine Fehlermeldung mehr ^^.. Hatte das b nicht gecastet.

Naja das Ouput sieht jetzt so aus :

5
248160-32-64-96-96Drücken Sie eine beliebige Taste . . .



Geschrieben von Karlito am 16.11.2012 um 01:50:

 

Schau dir noch mal meinen Post an. Dann wirst du sehen, woran die komischen Ausgaben liegen.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH