elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Torres de Hanoi
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Torres de Hanoi  (Leído 2,956 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Torres de Hanoi
« en: 21 Diciembre 2011, 05:47 am »

Código
  1.  
#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


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Torres de Hanoi
« Respuesta #1 en: 21 Diciembre 2011, 05:54 am »

Y la parte donde colocas %d?

Código
  1. printf("Torre1: \n",inicializa_discos(cantDiscos));


En línea

m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Re: Torres de Hanoi
« Respuesta #2 en: 21 Diciembre 2011, 05:59 am »

se lo habia colocado asi:

printf("Torre1: %d\n",inicializa_discos(cantDiscos));

y me imprime

321Torre1: 0
En línea

eltongabinghiman

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: Torres de Hanoi
« Respuesta #3 en: 21 Diciembre 2011, 06:00 am »

Probá llamando afuera del printf a la función inicializa_discos.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Torres de Hanoi
« Respuesta #4 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.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Torres de hanoi con netbeans « 1 2 »
Java
kch_l 11 29,897 Último mensaje 15 Marzo 2016, 01:51 am
por isylar21
Torres de hanoi
.NET (C#, VB.NET, ASP)
S1dD3xt35 0 2,919 Último mensaje 21 Marzo 2010, 01:20 am
por S1dD3xt35
ayuda con torres de hanoi en vb
Programación Visual Basic
Freelancer 1 5,868 Último mensaje 23 Agosto 2011, 00:03 am
por ignorantev1.1
torres de hanoi
Programación General
resckate 3 4,697 Último mensaje 10 Septiembre 2011, 22:01 pm
por Valkyr
[ANSI C] Torre de hanoi
Programación C/C++
CrashNebula 3 2,733 Último mensaje 28 Mayo 2013, 17:43 pm
por CrashNebula
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines