Título: Torres de Hanoi Publicado por: m@o_614 en 21 Diciembre 2011, 05:47 am 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 Título: Re: Torres de Hanoi Publicado por: naderST en 21 Diciembre 2011, 05:54 am Título: Re: Torres de Hanoi Publicado por: m@o_614 en 21 Diciembre 2011, 05:59 am se lo habia colocado asi:
printf("Torre1: %d\n",inicializa_discos(cantDiscos)); y me imprime 321Torre1: 0 Título: Re: Torres de Hanoi Publicado por: eltongabinghiman en 21 Diciembre 2011, 06:00 am Probá llamando afuera del printf a la función inicializa_discos.
Título: Re: Torres de Hanoi Publicado por: naderST en 21 Diciembre 2011, 06:02 am Claro, porque al hacer ese printf() primero se llama a la función inicializa_discos() y en esa función lo que haces es imprimir 321 y luego imprimes el valor de retorno de dicha función que sería 0 ya que al hacer el for cantDiscos queda en 0 y eso es lo que estás retornando.
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje. |