Código
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define TORRE_INICIAL 1
#define TORRE_AUXILIAR 2
#define TORRE_FINAL 3
#define MAX_DISCOS 5
int hanoi(int numDiscos, int torreInicial, int torreAuxiliar, int torreFinal);
int inicializa_discos(int cantDiscos);
int diametro_discos(int cantDiscos);
int main()
{
int cantDiscos, movimientos;
system("Cls");
printf("TORRES DE HANOI\n\n");
printf("\nCantidad de discos a mover (max 5): ");
scanf("%d", &cantDiscos);
if(cantDiscos>MAX_DISCOS)
printf("\nError! numero de discos maximo es 5\n");
else
{
printf("\nLa serie de movimientos a realizar es:\n");
printf("\nDiscos al inicio, se muestra el diametro de los discos:\n");
printf("Torre1: \n",inicializa_discos(cantDiscos));
printf("Torre2: \n");
printf("Torre3: \n");
movimientos = hanoi(cantDiscos, TORRE_INICIAL, TORRE_AUXILIAR, TORRE_FINAL);
printf("\nSe realizaron en total %d movimientos\n", movimientos);
printf("Presione una tecla para continuar...\n");
getch();
}
return 0;
}
int hanoi(int numDiscos, int torreInicial, int torreAuxiliar, int torreFinal)
{
int cantDiscos;
static int movimientos = 0;
if(numDiscos == 1)
{
printf("Mover el disco superior de la torre %d a la torre %d\n",torreInicial, torreFinal);
movimientos++;
printf("Torre1: \n");
printf("Torre2: \n");
printf("Torre3: \n");
}
else
{
hanoi(numDiscos - 1, torreInicial, torreFinal, torreAuxiliar);
printf("Mover el disco superior de la torre %d a la torre %d\n",torreInicial, torreFinal);
movimientos++;
printf("Torre1: \n");
printf("Torre2: \n");
printf("Torre3: \n");
hanoi(numDiscos - 1, torreAuxiliar, torreInicial, torreFinal);
}
return movimientos;
}
int inicializa_discos(cantDiscos)
{
int i;
for(i=cantDiscos;cantDiscos>=1;cantDiscos--)
printf("%d",cantDiscos);
return(cantDiscos);
}
Tengo un problema en la linea numero 26 de mi codigo, en vez de imprimir:
Torre1: 3 2 1 <- Son el numero de discos con los que se inicializa la torre.
me imprime esto:
321Torre1: (deberia de ser alreves)
creo que no estoy llamando bien a la funcion inicializa_discos()
gracias de antemano