Türme von Hanoi in C++

Efe

New member
#1
Hi alle samt, ich bin gerade im ersten Semester meines Elektrotechnik Studiums und bräuchte Hilfe bei der Programmierung von Türme von Hanoi.

Bedingungen der Aufgabe:
Die Programmiersprache die ich benötige ist C++ und müsste auf Visual Studio laufen. Ich habe hier bereits einen Beitrag dazu gefunden, jedoch bräuchte ich ein Programm wo der Benutzer selbst entscheiden kann welche Scheibe wo hin kommt. Sinngemäß dürfte natürlich nur die oberste Scheibe bewegt werden. Dazu kommt noch das ich höchsten Befehle wie die while-Schleife oder for-Schleife verwenden darf, da wir noch nicht weiter sind in unserer Vorlesung.

Ich stelle euch auch noch mal die genaue Aufgaben Stellung hier rein:

Schreiben Sie ein Programm, das den Benutzer das Spiel der Türme von Hanoi mit drei Scheiben lösen lässt. Bei diesem Spiel befinden sich zu Anfang drei Scheiben verschiedener Größe auf einer Stange 1. Die größte Scheibe befindet sich unten und die kleinste oben. Das Ziel des Spiels ist, die Scheiben in derselben Reihenfolge auf einer weiteren Stange (Stange 3) aufzureihen. Es darf dabei immer nur eine Scheibe auf einmal bewegt werden; als Ablagehilfe kann eine Stange 2 mitbenutzt werden. Es darf sich nie eine größere Scheibe auf einer kleineren Scheibe befinden. Der Benutzer soll bei Ihrem Programm durch Eingaben den Transport einzelner Scheiben veranlassen und in jedem Schritt die Position der Scheiben angezeigt bekommen, bis sich alle Scheiben auf Stange 3 befinden.
Hinweise: - Es könnte einfacher sein, die Stangen untereinander anzeigen zu lassen! - Planen Sie Ihr Programm im Vorfeld (PAP, Notizen, u.ä.) - Funktionen zu nutzen wird in den meisten Fällen die Arbeit erleichtern

Vielen dank für eure Hilfe und viel Spaß beim Coden.
 

CDW

Moderator
Mitarbeiter
#2
und bräuchte Hilfe bei der Programmierung von Türme von Hanoi.
...
Vielen dank für eure Hilfe und viel Spaß beim Coden.
Ich sehe im Moment keine konkreten Fragen und keine eigenen Ansätze.
Nur als Hinweis: dies ist kein "Macht-mal-meine-Hausaufgaben" Forum.
 

Efe

New member
#4
Ich sehe im Moment keine konkreten Fragen und keine eigenen Ansätze.
Nur als Hinweis: dies ist kein "Macht-mal-meine-Hausaufgaben" Forum.
Ich möchte auch keine ganze Lösung haben sondern nur einen Ansatz. Das bringt mir nichts wenn ihr mir die ganze Lösung schickt und ich daraus nichts lerne. ;) Meine Ansätze haben bis her zu keiner Lösung geführt und hätte mich über eins zwei andere Gedanken gefreut, tut mir leid wenn das so rüber kam das ich das ganze Programm von euch haben möchte.
 

Efe

New member
#5
Und hier habt hier meine Lösung des Spiel jedoch ohne das der Benutzer eingreifen kann. Hübsch ist was anderes aber zur Zeit habe ich mich eher auf die Aufgabenstellung konzentriert.
C++:
#include <stdio.h>

int zuege = 0;

int bewegen(int scheiben, int stange1, int stange2, int stange3)
{
    if (scheiben > 0)
    {   
        bewegen(scheiben - 1, stange1, stange2, stange3);
        zuege++;
        printf("Oberste Scheibe von %d nach %d  (%d)\n", stange1, stange3, zuege);
        bewegen(scheiben - 1, stange2, stange3, stange1);
    }
    getchar();
}

int main()
{
    int anzahl = 0;
    printf("Anzahl der Scheiben: ");
    scanf("%d", &anzahl);
    bewegen(anzahl, 1, 3, 2);
    printf("Anzahl der Zuege: %d\n", zuege);
}
 
#6
Wie sieht denn dein Konzept mit Nutzerinteraktion aus?
Bevor man programmiert, wird ein grobes, logisches Konzept erstellt. Beispielsweise:

- Nutzer wählt die Anzahl der Scheiben.
- Einer der Türme wird errichtet (welcher egal). Visuelle Abbildung mit Grafiken?
- while(Turm != Leer)
- Nutzer klickt auf den Stapel, von dem der Stein "aufgenommen" werden soll. Nächste Interaktion bestimmt den Zielort. Programm testet, ob die Regeln bei diesem Zug eingehalten wurden. Wenn nein, Error - Aktion rückgängig.​
- nächster Zug
- Wenn Turm == Leer, nach dem letzten Zug: Meldung: Erfolgreich.
 
Oben