turm von hanoi



  • hallo zusammen.
    ich lerne erst "c" und ich hab ein Problemm
    könnt ihr mir helfen. Ich muss ein programm entwickeln "turm von hanoi".
    das schlimmste ist dass ich nich weiss, wie ich anfangen soll.
    also ich bitte auch um Hilfe.
    WICHTIG:
    der User muss ne anzahl der elemente eingeben zB 6

    das muss unter grafisch dargestellt werden also:

    1
    2
    3
    4
    5
    6
    -- -- --
    usw...

    das Programm muss alle schritte berechnen und am ende ausgeben.
    und noch wichtig: jeder einzelne schritt muss je ne sekunde(ne sekunde verzögerung) auf dem bildschirm aufgezeigt werden

    danke



  • Kannst du mir mal erklären, was ueberhaupt ein Turm von Hanoi ist? 😕

    Poste doch mal, was du schon programmiert hast, dann kann man dir bei deinen Fehlern evt auch Hilfestellungen o.ä. geben .



  • das heißt auch "turm von bable" babel oder so was



  • du weisst das ist so eon spiel hier hast du ein bspl.
    http://mypage.bluewin.ch/kl-hagmann/humor/spiel/hanoi/hanoi2f.htm



  • muss? hört sich nach hausaufgabe an.
    gib mal deinen bisherigen code, weil ein komplettes ergebnis wirste nicht kriegen.

    aber wo liegt das problem? du machst einfach ne schleife die so oft ein stockwerk zeichnet wie eingegeben wurde (so verstehe ich die aufgabe zumindest).

    /EDIT: nee, schaut etwas komplexer aus.....



  • Und musst natürlich pruefen, dass die Zahl, die du drüber legen moechtest (bildlich gesehen) nicht grösser ist als die Zahl, die darunter liegt.

    Ist doch eigentlich relativ einfach oder?



  • loki1985 schrieb:

    muss? hört sich nach hausaufgabe an.
    gib mal deinen bisherigen code, weil ein komplettes ergebnis wirste nicht kriegen.

    aber wo liegt das problem? du machst einfach ne schleife die so oft ein stockwerk zeichnet wie eingegeben wurde (so verstehe ich die aufgabe zumindest).

    Er muss das Stockwerk nich zeichnen, soweit ich es richtig verstanden habe, er muss lediglich, das Spiel mit Zahlen machen:

    1
    2
    3
    4
    5
    6
    .
    .
    .



  • #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