Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - EmmanuelTR9

#21
Cita de: engel lex en  1 Octubre 2019, 04:48 AM
primera cosa si estas aprendiendo programacion y piensas graduarte en ello debes aprender a investigar y tener nocion de matematicas... lo primero siempre es revisar el articulo de wikipedia sobre lo que haces...

https://es.wikipedia.org/wiki/Torres_de_Han%C3%B3i

la formula es



lo que tenias que hacer no era un factorial era un exponencial de 2... es casi identico solo que se multiplican 2 repetidas veces...

si eso sabia pero no le entiendo al profe porque queria hacer eso, bueno en fin ayer que me dira, gracias
#22
Cita de: engel lex en  1 Octubre 2019, 04:41 AM
no estoy seguro a que se refiere, 2n-1 es una formula donde sinceramente no veo recursividad ya que bueno... es 2n-1, en tu caso 2(3)-1 = 5 (que tampoco son tus 7)
Pero asi lo dejare ya que no entiendo, sale lo mismo, muchisimas gracias :)
#23
Cita de: engel lex en  1 Octubre 2019, 04:28 AM
el factorial no está mal... 3! = 6... el factorial jamás te dará un numero impar (7) que yo sepa... (todo numero multiplicado por 2 es par y es lo primero que se multiplica en el factorial)... cual es la formula matematica de los pasos necesarios para hacer una torre de hanoi?
Bueno eso si entendi pero lo que me dijo el profesor fue esto " agregar una función también re-cursiva con la formula 2n-1 que determine el número de movimientos. "
#24
Cita de: engel lex 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 (cpp) [Seleccionar]
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 ?
#25
Cita de: engel lex 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 (cpp) [Seleccionar]
printf("\n esto-> %d <-", factorial(n));

Disculpa pero no entiendo como pasarle el valor al factorial
#26
Cita de: engel lex en  1 Octubre 2019, 03:51 AM
cambia la linea 30 por

Código (cpp) [Seleccionar]
printf("\n esto-> %d <-", factorial);


Mira ya lo puse pero me da otra cantidad estatica

#27
Cita de: engel lex en  1 Octubre 2019, 03:08 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
#28
Cita de: engel lex en  1 Octubre 2019, 02:57 AM
no entiendo, los muestra o no los muestra

asumiendo que no los muestra es por

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

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 ?
#29
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.

[code=c]#include <stdio.h>

#include <stdio.h>

int factorial(int x){
   int rta;
   if(x==0)
       rta=1;
       else
       rta=x*factorial(x-1);
       return rta;
}

void hanoi(int n,int inic,int tmp,int final){
 
}

}
[/code]

#30
Hola amigos necesito de su ayuda logre que este codigo funcionara en dev-c++, pero tambien para que funcionara en turbo c pero el problema del segundo programa es que no puedo añadir getch(); alguien me podria ayudar

Primer codigo en el primer programa mencionado.
Código ("c") [Seleccionar]
#include <stdio.h>

main()
{
   int monto, billetes, residuo;
   int b500, b200, b100, b50, b20, m10, m5, m2, m1;

   printf("Solicito la cantidad: ");
   scanf("%d", &monto);

   billetes = monto;
   monto - billetes;

   b500 = billetes / 500;
   residuo = billetes % 500;

   b200 = residuo / 200;
   residuo = residuo % 200;

   b100 = residuo / 100;
   residuo = residuo % 100;

   b50 = residuo / 50;
   residuo = residuo % 50;

   b20 = residuo / 20;
   residuo = residuo % 20;

   m10 = residuo / 10;
   residuo = residuo % 10;

   m5 = residuo / 5;
   residuo = residuo % 5;

   m2 = residuo / 2;
   residuo = residuo % 2;
   
   m1 = residuo;


   printf(
   "\nSe puede desglosar en:\n\n"
   "Billetes de 500 : %d\n"
   "Billetes de 200 : %d\n"
   "Billetes de 100 : %d\n"
   "Billetes de 50  : %d\n"
   "Billetes de 20  : %d\n"
   "Monedas de 10   : %d\n"
   "Monedas de 5 : %d\n"
   "Monedas de 2 : %d\n"
   "Monedas de 1 : %d\n",
   b500, b200, b100, b50, b20, m10, m5, m2, m1
   );

};



Segundo codigo a turbo c
Código ("c") [Seleccionar]
#include <stdio.h>
int monto, billetes, residuo;
int b500, b200, b100, b50, b20, b10, m10, m5, m2, m1;
main()
{
   clrscr();
   {
   printf("Solicito la cantidad: ");
   scanf("%d", &monto);
   }
   {
   billetes = monto;
   monto - billetes;

   b500 = billetes / 500;
   residuo = billetes % 500;

   b200 = residuo / 200;
   residuo = residuo % 200;

   b100 = residuo / 100;
   residuo = residuo % 100;

   b50 = residuo / 50;
   residuo = residuo % 50;

   b20 = residuo / 20;
   residuo = residuo % 20;

   m10 = residuo / 10;
   residuo = residuo % 10;

   m5 = residuo / 5;
   residuo = residuo % 5;

   m2 = residuo / 2;
   residuo = residuo % 2;
   
   m1 = residuo;
   }
   {
   printf(
   "\nSe puede desglosar en:\n\n"
   "Billetes de 500 : %d\n"
   "Billetes de 200 : %d\n"
   "Billetes de 100 : %d\n"
   "Billetes de 50  : %d\n"
   "Billetes de 20  : %d\n"
   "Monedas de 10   : %d\n"
   "Monedas de 5 : %d\n"
   "Monedas de 2 : %d\n"
   "Monedas de 1 : %d\n",
   b500, b200, b100, b50, b20, m10, m5, m2, m1
   );
  }
};