C
computer7
Ospite
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[SUP]^n[/SUP]-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);
}
}
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[SUP]^n[/SUP]-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);
}
}