turm von hanoi



  • #include <stdio.h>
    #include <iostream.h>

    using namespace std;
    int n;

    void babel( int z, int d, int wieviel)
    {
    if (wieviel > 1)
    {
    babel(z,6-z-d,wieviel-1);
    babel(z,d,1);
    babel(6-z-d,d,wieviel-1);
    }
    else
    {
    cout << z << " --> " << d << "\n";
    }
    }
    int main()
    {
    cout << "Wie viele elemente wilst du rueber geben?\t";
    cin >> n;
    babel(1,3,n);
    cout << "\n";
    }

    mehr kann ich nicht dass muss je ne sekunde auf dem bilschirm verschoben werden(je ein schritt)



  • Das ist C++ kein C 😉



  • ja ich weiss, dass kann entweder in c oder in c++ geschrieben werden



  • in C++ kenn ich mich nich aus sry



  • Ich bin zwar auch noch recht unbedarft was C an geht, aber einen Sekundetakt kannst du z.B so erstellen:

    #include <time.h>  // und natürlich was du noch so alles brauchst
    
    main()
    {
    
    // keine Ahnung was du hier noch alles machen willst ;-)
    
    alt=clock();
    while( ? )                    // Hier Bedingung zum Abbruch einbauen
    {
       now=clock();               // zum Verständnis mal die time.h anschauen
       if((now-alt)/CLK_TCK>=1)   //               -"-
          {
           alt=clock();
    
        // hier kannst du jetzt die Funktionen einbauen, 
        // die sekündlich ablaufen sollen
    
          }
    }
    return 0;
    }
    


  • oder dei Funktion _sleep(Millisekunden)

    Wobei Millisekunden die Wartezeit aussagt



  • Lyrix schrieb:

    oder dei Funktion _sleep(Millisekunden)

    Wobei Millisekunden die Wartezeit aussagt

    jup, ist aber winapi. geht also nur wenn er auf win codet. aber das könnte man schon annehmen....



  • danke ich wer das implementieren und ausprobieren
    nochmals dank



  • loki1985 schrieb:

    Lyrix schrieb:

    oder dei Funktion _sleep(Millisekunden)

    Wobei Millisekunden die Wartezeit aussagt

    jup, ist aber winapi. geht also nur wenn er auf win codet. aber das könnte man schon annehmen....

    Naja wenn es nen Schulprojekt ist, denek ich schon dass er unter Windows programmiert



  • also das ganze problem musst du rekursiv angehen. du hast drei plaetze

    A B C

    zuerst legst du die erste scheibe von a nach b dann die naechste auf c dann wieder die von b auf c und dann eine weitere von a nach b und dann die beiden von c auf b dann kannste waenn du willst die von b wieder auf c legen oder auch die neue scheibe auf c...



  • find besser erstmal raus, wie du einen 5er turm per hand umschichtest. dann hast du auch im programm den durchblick. vorher sollte das programm aber anzeige und manuelle steuerung beherrschen, bevor es etwas selber loesen kann.


Anmelden zum Antworten