Lista Utenti taggati

Risultati da 1 a 3 di 3

Discussione: [C]Torre di Hanoi

  1. #1
    Utente Attivo
    Data Registrazione
    10-01-12
    Messaggi
    21
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito [C]Torre di Hanoi

    Salve a tutti! Come dice il titolo ho un problema nella programmazione del codice per la Torre di Hanoi.
    Praticamente devo creare una f(x) che mi permetta di ricevere in input il numero di dischi con cui giocare e i tre pioli A(partenza),B(ausiliario),C(arrivo).Devo restituire, con l'uso della ricorsione , le frasi che mi indicano la soluzione(Ad Esempio:
    "Muovi il disco da A a C"
    "Muovi il disco da C a B"... e via discorrendo)

    Le frasi da restituire devono coincidere con il numero di mosse date dall'espressione 2^n-1.

    Il mio problema sta nel capire come diavolo faccio a stampare le mosse da fare!
    Vi posto il codice che sto elaborando(UNA BOZZA):

    MAIN

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    void hanoi(int n, char from, char to, char aux );
    int main(void)
    {
    int dischi;
    char A,B,C;

    printf("Con quanti dischi vuoi giocare?");
    scanf("%d",&dischi);
    printf("Il numero di mosse necessarie= %.f\n",pow(2,dischi)-1);
    hanoi(dischi,'A','B','C');
    system("PAUSE");
    return 0;
    }

    FUNZIONE
    void hanoi(int n, char from, char to, char aux ){

    if(n==1){

    printf("Spostare da %c a %c",from,to);

    }
    else{

    hanoi(n-1,from,to,aux);
    }
    }

  2.  
    Stanco della Pubblicità? Registrati

  3. #2
    Utente Attivo
    Data Registrazione
    30-03-10
    Località
    Verona
    Messaggi
    323
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [C]Torre di Hanoi

    Se non ricordo male, il gioco prevede lo spostamento di cilindri di dimensioni sempre più piccole per formare una torre in un altro piolo giusto?
    In questo caso dovresti crearti tre PILE, una per ogni piolo.
    Le PILE ti ricordo sono strutture concatenate di tipo FIFO (First In First Out) ovvero l' elemento in cima è il primo ad essere scartato.
    Il mio consiglio è di crearti tante pile quante sono i pioli richiesti (identificali con A, B, C...).
    Per capire gli spostamenti, potresti crearti una struct contenente il campo origin (piolo di origine) e destination (piolo di destinazione) e poi arrivare alla soluzione tramite push() (immetti elemento) e pop() estrai elemento

  4. #3
    Utente Attivo
    Data Registrazione
    10-01-12
    Messaggi
    21
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [C]Torre di Hanoi

    Intanto ti ringrazio, però non sono ancora a questo livello.... .
    Non ho ancora affrontato le pile. Cmq so che può essere risolto cosi, con la ricorsione, ma non arrivo a capire come faccio a stampare le frasi utilizzando la stessa...

    ---------- Post added at 14:33 ---------- Previous post was at 14:27 ----------

    Guarda,non ti preoccupare l'ho appena risolto....
    Prima sbagliavo perchè chiamavo troppe volte la f(x) dentro se stessa....grazie ugualmente!

  5.  
    Stanco della Pubblicità? Registrati

Informazioni Discussione

Utenti che Stanno Visualizzando Questa Discussione

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Torna Su