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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Torre Hanoi mostrar numero de movimientos en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Torre Hanoi mostrar numero de movimientos en C  (Leído 5,245 veces)
EmmanuelTR9

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Torre Hanoi mostrar numero de movimientos en C
« en: 1 Octubre 2019, 02:43 am »

No puedo mostrar el numero de movimientos que realiza solo los muestra, alguien me podria orientar, agregue int factorial para que pueda ya que me explicaron que se tenia que agregar ello pero no puedo.

Código
  1. [code=c]#include <stdio.h>
  2.  
  3. #include <stdio.h>
  4.  
  5. int factorial(int x){
  6.    int rta;
  7.    if(x==0)
  8.        rta=1;
  9.        else
  10.        rta=x*factorial(x-1);
  11.        return rta;
  12. }
  13.  
  14. void hanoi(int n,int inic,int tmp,int final){
  15.  
  16. }
  17.  
  18. }
[/code]



« Última modificación: 1 Octubre 2019, 04:46 am por EmmanuelTR9 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Torre Hanoi mostrar numero de movimientos en C
« Respuesta #1 en: 1 Octubre 2019, 02:57 am »

Citar
No puedo mostrar el numero de movimientos que realiza solo los muestra

no entiendo, los muestra o no los muestra

asumiendo que no los muestra es por

Código:
printf("\n", factorial);

le pasas como parametro factorial, pero no lo incluyes en el formato

recuerda que debes pasar el tipo a motrar en el formato

Código:
printf("\nMover el disco %d de la base %c a la base %c",n,inic,tmp);

como lo haces allí



por otro lado, las malas practicas

1- main debe ser de tipo int siempre
2- no hagas if sin corchetes, no agrega nada positivo al codigo, solo dificulta la lectura y aumento la posibilidad de incluir un bug accidental
3- las funciones recursivas no son la mejor solucion a los problemas, mal implementada puede sobrecargar la pila de instrucciones y causar fallos en el programa, un ciclo haría este trabajo perfectamente y haría el codigo mas legible


« Última modificación: 1 Octubre 2019, 03:00 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
EmmanuelTR9

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Torre Hanoi mostrar numero de movimientos en C
« Respuesta #2 en: 1 Octubre 2019, 03:02 am »

no entiendo, los muestra o no los muestra

asumiendo que no los muestra es por

Código:
printf("\n", factorial);

le pasas como parametro factorial, pero no lo incluyes en el formato

recuerda que debes pasar el tipo a motrar en el formato

Código:
printf("\nMover el disco %d de la base %c a la base %c",n,inic,tmp);

como lo haces allí



por otro lado, las malas practicas

1- main debe ser de tipo int siempre
2- no hagas if sin corchetes, no agrega nada positivo al codigo, solo dificulta la lectura y aumento la posibilidad de incluir un bug accidental
3- las funciones recursivas no son la mejor solucion a los problemas, mal implementada puede sobrecargar la pila de instrucciones y causar fallos en el programa, un ciclo haría este trabajo perfectamente y haría el codigo mas legible

Gracias por responder, la verdad no se como implementarlo solo el maestro nos indico que teniamos que hacer ello para que pudieramos contar pero de ahi no explico mas me podrias orientar ?
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Torre Hanoi mostrar numero de movimientos en C
« Respuesta #3 en: 1 Octubre 2019, 03:08 am »

Citar
printf("\nMover el disco %d de la base %c a la base %c",n,inic,tmp);

el formato incluye % seguido de una letra para indicar el tipo de dato, esto será remplazado por los valores pasados a continuacion en orden, fijate alli %d corresponde a la variable n que es un "digito" (para hacerlo mas facil de recordar), luego %c corresponde a inic y tmp que son "caracteres"

en tal caso necesitas incluir el %d para imprimir el resultado
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
EmmanuelTR9

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Torre Hanoi mostrar numero de movimientos en C
« Respuesta #4 en: 1 Octubre 2019, 03:45 am »

el formato incluye % seguido de una letra para indicar el tipo de dato, esto será remplazado por los valores pasados a continuacion en orden, fijate alli %d corresponde a la variable n que es un "digito" (para hacerlo mas facil de recordar), luego %c corresponde a inic y tmp que son "caracteres"

en tal caso necesitas incluir el %d para imprimir el resultado

Los movimientos si me los imprime correctamente, solo que no puedo mandar a llamar las repeticiones al ingresar numero
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Torre Hanoi mostrar numero de movimientos en C
« Respuesta #5 en: 1 Octubre 2019, 03:51 am »

Citar
en tal caso necesitas incluir el %d para imprimir el resultado

cambia la linea 30 por

Código
  1. printf("\n esto-> %d <-", factorial);
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
EmmanuelTR9

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Torre Hanoi mostrar numero de movimientos en C
« Respuesta #6 en: 1 Octubre 2019, 04:03 am »

cambia la linea 30 por

Código
  1. printf("\n esto-> %d <-", factorial);


Mira ya lo puse pero me da otra cantidad estatica

« Última modificación: 1 Octubre 2019, 05:06 am por EmmanuelTR9 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Torre Hanoi mostrar numero de movimientos en C
« Respuesta #7 en: 1 Octubre 2019, 04:07 am »

disculpa, mea culpa, se me pasó por alto que era un funcion, no una variable... debes pasarle el valor al factorial para que lo calcule

Código
  1. printf("\n esto-> %d <-", factorial(n));
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
EmmanuelTR9

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Torre Hanoi mostrar numero de movimientos en C
« Respuesta #8 en: 1 Octubre 2019, 04:22 am »

disculpa, mea culpa, se me pasó por alto que era un funcion, no una variable... debes pasarle el valor al factorial para que lo calcule

Código
  1. printf("\n esto-> %d <-", factorial(n));

Disculpa pero no entiendo como pasarle el valor al factorial
En línea

EmmanuelTR9

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Torre Hanoi mostrar numero de movimientos en C
« Respuesta #9 en: 1 Octubre 2019, 04:24 am »

disculpa, mea culpa, se me pasó por alto que era un funcion, no una variable... debes pasarle el valor al factorial para que lo calcule

Código
  1. printf("\n esto-> %d <-", factorial(n));

ya lo hice pero al momento cuando pongo 3 me dice 6 pero son 7 pasos no estara mal mi factorial ?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
mostrar por pantalla los residuos de un número
Programación C/C++
indict 3 2,451 Último mensaje 21 Octubre 2012, 14:30 pm
por leosansan
[ANSI C] Torre de hanoi
Programación C/C++
CrashNebula 3 3,844 Último mensaje 28 Mayo 2013, 17:43 pm
por CrashNebula
Mostrar Ganar tocar un número en la matriz.
Programación C/C++
veravluis 0 1,715 Último mensaje 25 Febrero 2016, 21:04 pm
por veravluis
mostrar un numero/variable elevado a algo
Java
meaf75 1 2,815 Último mensaje 3 Noviembre 2017, 22:16 pm
por ivancea96
Torre de Hanoi
Programación C/C++
michfere43 1 2,595 Último mensaje 29 Octubre 2020, 01:33 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines