Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda Con Torres De Hanoi Recursiva

Estas en el tema de Duda Con Torres De Hanoi Recursiva en el foro de C/C++ en Foros del Web. Buenas a todos. Necesito ayuda con el codigo de las torres de hanoi recursivo. creo que se debe llamar las funciones 3 veces. pero no ...
  #1 (permalink)  
Antiguo 07/05/2016, 17:57
 
Fecha de Ingreso: noviembre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Pregunta Duda Con Torres De Hanoi Recursiva

Buenas a todos.
Necesito ayuda con el codigo de las torres de hanoi recursivo.
creo que se debe llamar las funciones 3 veces. pero no logro hacerlo funcionar.
Este es El Codigo Que Me Dieron A completar.
Se Debe Completar En la funcion Hanoi
Agradesco de antemano su ayuda Xfa...!!!
Código:
#include <iostream>
#include <string>
#include<conio.h>
using namespace std;
struct nodo{
    int nro;
    struct nodo *sgte;
};
typedef nodo *pila;
void push( pila &p, int valor )
{
            pila aux;
     aux = new(struct nodo);  // apuntamos al nuevo nodo creado
     aux->nro = valor;
     aux->sgte = p ;
     p = aux ;
}
int pop( pila &p )
{
     int num ;
     pila aux;
     aux = p ;
     num = aux->nro;   // asignamos el primer vamor de la pila
     p = aux->sgte ;
     delete(aux);
     return num;
}
void mostrar_pila( pila p )
{
       pila aux;
     aux = p;     // apunta al inicio de la lista
     string t="";
     while( aux !=NULL )
     {
            cout<< aux->nro <<", ";
            aux = aux->sgte;
     }
     cout<<endl;
}
pila orig,dest,aux;
void mostrar_pilas(void)
{
      cout<<"origen: ";
      mostrar_pila(orig);
      cout<<"destino: ";
      mostrar_pila(dest);
      cout<<"auxiliar: ";
      mostrar_pila(aux);
      cout<<endl;
}
void hanoi(int n,pila &o,pila &d,pila &a) {//n=cantidad de discos, o=origen, d=destino, a=auxiliar
      if (n == 1) {//Caso base
            push(d,pop(o));
            mostrar_pilas();
      }else{
            //Completar recursividad
            hanoi(n-1,     ,    ,    );
            hanoi(     ,     ,    ,    );
            hanoi(n-1,    ,    ,    );
      }
}
int main() {
      //Completar para n discos, actualmente solo 3
	do{
      push(orig,3);
      push(orig,2);
      push(orig,1);
      mostrar_pilas();
      hanoi(3,orig,dest,aux);
	}while(true);
      getch();
}
  #2 (permalink)  
Antiguo 08/05/2016, 01:41
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Duda Con Torres De Hanoi Recursiva

Y que es lo que has intentado hasta la fecha? Porque está claro que nos estás poniendo el código tal cual te lo han dado en clase...
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.
  #3 (permalink)  
Antiguo 08/05/2016, 03:13
 
Fecha de Ingreso: noviembre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Duda Con Torres De Hanoi Recursiva

Hola, Lo intente de varias maneras pero aun asi no me funciona.
he visto que la mayoria de los codigos de hanoi hacen 2 llamadas a la funcion.
Pero aqui son tres.
Código:
void hanoi(int n,pila &o,pila &d,pila &a) {//n=cantidad de discos, o=origen, d=destino, a=auxiliar
      if (n == 1) {//Caso base
            push(d,pop(o));
            mostrar_pilas();
      }else{
            //Completar recursividad
            hanoi(n-1,a,d,o);
            hanoi(n-1,d,o,a);
            hanoi(n-1,a,d,o);
      }
}

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:20.