Hallo, ich weiß, es ist sehr kurzfristig, aber ich soll zu morgen ein Code in C++ erklären können. Es handelt sich um die Türme von Hanoi. Ich kann das n nicht wirklich zuordnen. N sind die einzelnen Scheiben, aber wo wird das definiert? Würde mich über eure Hilfe freuen... #include <iostream> using namespace std; int verschiebe(int n, char ausgangsort, char zielort, char zwischenort) { // müssen überhaupt scheiben verlegt werden? (Abbruchbedingung der Rekursion) if(n > 0) { // Verschiebe n-1 Scheiben von dem Ausgangsort auf den Zwischenort // mithilfe des Zielortes als Zwischenort verschiebe(n-1, ausgangsort, zwischenort, zielort); // Verschiebe Scheibe n vom Ausgangsort zum Zielort cout << "Verschiebe Scheibe " << n; cout << " von " << ausgangsort; cout << " nach " << zielort << endl; // Verschiebe n-1 Scheiben von dem Zwischenort auf den Zielort // mithilfe des Startortes als Zwischenort verschiebe(n-1, zwischenort, zielort, ausgangsort); } } int main() { int scheibenanzahl; cout << "Wie viele Scheiben sollen verlegt werden? "; cin >> scheibenanzahl; verschiebe(scheibenanzahl, 'A', 'C', 'B'); system("PAUSE"); return 0; }
Du kannst keine Scheibe verschieben, wenn keine mehr da ist. Darum die Abfrage.
Google findet sogar als erstes den Wikipedia-Artikel, wo das alles wunderbar erklärt wird.
buechsenpilot schrieb: > Es handelt sich um die Türme von Hanoi. Eines der Paradebeispiele für Rekursion :-) Dev-Cpp ?
Ich weiß, aber ich verstehe nicht, wie n definiert ist... Es wird nichts für n eingegeben oder dergleichen. Woher weiß das Programm, was n ist?
buechsenpilot schrieb: > int main() > { > int scheibenanzahl; > > cout << "Wie viele Scheiben sollen verlegt werden? "; > cin >> scheibenanzahl; > verschiebe(scheibenanzahl, 'A', 'C', 'B'); > > system("PAUSE"); > return 0; > } Was meinst du was hier passiert? Was macht die Zeile mit "cin" und was macht die Zeile mit "verschiebe(...)"? Wenn du das herausgefunden hast, dann weißt du auch woher das 'n' kommt...
Hallo, buechsenpilot schrieb: > int main() > { > int scheibenanzahl; > > cout << "Wie viele Scheiben sollen verlegt werden? "; > cin >> scheibenanzahl; > verschiebe(scheibenanzahl, 'A', 'C', 'B'); > > system("PAUSE"); > return 0; > } ich kann kein C++ aber soviel verstehe sogar ich. Im Hauptprogramm wird doch nach der Anzahl der Scheiben gefragt. Danach wird diese Anzahl an die Funktion "verschiebe" übergeben. Mit freundlichen Grüßen Guido
Guido schrieb: > Im Hauptprogramm wird doch nach der Anzahl der Scheiben gefragt. na ja, aber die "gedankliche Transfer-Leistung", daß "scheibenanzahl" identisch ist mit "n", ist wohl momentan die unüberwindbare Hürde für den buechsenpilot @buechsenpilot: "n" als Variale soll halt einfach nur eine (beliebig große) Anzahl von Objekten als Variable sein. So wie ein Sortieralgorithmus für n=1,2,3,4,5, ...n" zu sortierene Objekte funktioniert (funktionieren sollte), funktioniert auch "Türme von Hanoi" für eine beliebige Anzahl von Scheiben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.