Erklärung Türme von Hanoi

Gast #2592760
Lesenswert?
• ▲
▼
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;
}
#2592928
Lesenswert?
• ▲
▼
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...
Gast #2592931
Lesenswert?
• ▲
▼
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
#2593722
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren