Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Steine verrücken » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Steine verrücken
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
H4wk H4wk ist männlich
Grünschnabel


Dabei seit: 22.11.2006
Beiträge: 4

Steine verrücken Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Es gebe drei Positionen, Position 1, Position 2, Position 3. Auf Position 1 seien
n kreisscheibenförmige Steine übereinandergestapelt. Dabei sind diese Steine nach ihrem Durchmesser sortiert, wobei der Stein mit dem größtem Durchmesser unten liegt. Die anderen beiden Positionen seien leer. Die Steine dürfen verlegt werden. Allerdings muss darauf geachtet werden, dass in jeder Position die Größenreihenfolge eingehalten wird. Es darf also niemals ein kleinerer Stein unter einem größeren sein.

Nun sollen alle Steine von Position 1 nach Position 3 gebracht werden. Ausgegeben werden sollen die einzelnen Verrückungen der Steine.
Kann mir jemand einen Tipp geben, wie ich das in C++ programmieren kann?
22.11.2006 19:13 H4wk ist offline E-Mail an H4wk senden Beiträge von H4wk suchen Nehmen Sie H4wk in Ihre Freundesliste auf
David1979
Mitglied


Dabei seit: 26.09.2006
Beiträge: 27

RE: Steine verrücken Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo H4wk,

dass, was du mit Steine verrücken meinst ist unter dem Begriff Die Türme von Hanoi bekannt. Ohne großartig viel rumzureden hier der Link zur Wikipediaseite, da ist von der Geschichte bis zur algorithmischen Umsetzung alles haarklein erklärt. Fall du nach dem Durchlesen immer noch Verständnisprobleme haben solltest, meld dich! Wink

Gruß, David
22.11.2006 19:40 David1979 ist offline E-Mail an David1979 senden Beiträge von David1979 suchen Nehmen Sie David1979 in Ihre Freundesliste auf
H4wk H4wk ist männlich
Grünschnabel


Dabei seit: 22.11.2006
Beiträge: 4

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Erstmal Danke, der Name dieses Problems und der Wikipedialink haben mir schon sehr geholfen.
Jetzt stellt sich mir allerdings ein C++ Problem:
Wie kann ich, wenn ich ein Integer Array habe
als Voraussetzung benutzen, dass alle Werte den selben Wert haben müssen?
Genauer gesagt, kann ich irgendwie eine Schleife schreiben, die sich so lange wiederholt bis, in meinem Fall alle Stellen des Array den Wert 2 haben?
23.11.2006 14:37 H4wk ist offline E-Mail an H4wk senden Beiträge von H4wk suchen Nehmen Sie H4wk in Ihre Freundesliste auf
David1979
Mitglied


Dabei seit: 26.09.2006
Beiträge: 27

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo H4wk,

eine Schleife in C++ ist nach folgender Syntax aufgebaut:

code:
1:
2:
3:
4:
5:
for (<Initialisierung>;<Bedingung>;<Reinitialisierung>) { 
    Anweisung_1;
    ...
    Anweisung_n; 
}


Dabei kannst du bei der For-Schleife im Initialisierungsteil alle Startbedingungen für deine Variablen festlegen. Zum Beispiel kannst du dort einen Zähler definieren. Dieser Teil wird nur einmal ausgeführt. Anschließend wird die Bedingung geprüft. Die Schleife wird anschließend so oft durchlaufen, wie die Bedingung den Wahrheitswert true (bzw. einen Wert > 0) zurückliefert. Nach jedem Schleifendurchlauf wird der Teil ausgeführtl, der mit Reinitialisierung gekennzeichnet ist. Hier kann man beispielsweise dein Zähler um 1 erhöhen. Dann wird bei der Bedingungsprüfung weiter gemacht.

Als kleines Beispiel, dass alle Zahlen von 0 bis 10 ausgibt:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
#include <iostream.h>

void main(void) {
    int counter;
    for (counter = 0; counter <= 10; counter++) {
        cout << "Zaehler : " << counter << "\n"; 
    }
}


Du müsstest das untere Beispiel nun so umformen, dass über die Länge des Arrays iteriert wird und jedem Feld des Arrays der Wert 2 zugewiesen wird.

Gruß. David
23.11.2006 15:13 David1979 ist offline E-Mail an David1979 senden Beiträge von David1979 suchen Nehmen Sie David1979 in Ihre Freundesliste auf
H4wk H4wk ist männlich
Grünschnabel


Dabei seit: 22.11.2006
Beiträge: 4

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke, ich habs hingekriegt smile
24.11.2006 19:29 H4wk ist offline E-Mail an H4wk senden Beiträge von H4wk suchen Nehmen Sie H4wk in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Steine verrücken