Programación General => C/C++ => Mensaje iniciado por: SkullFlower en Viernes 1 de Octubre de 2010, 03:17
Título: duda con un switch
Publicado por: SkullFlower en Viernes 1 de Octubre de 2010, 03:17
Hola,
bueno estoy usando un switch pero por ejemplo al poner un numero diferente al 1, 2 o 3 como el 5 u otro numero que no este dentro de las opciones, sale el mensaje ese de "opción no valida" y luego llama a main para que se empiece la ejecución del programa de nuevo para que elija una opción de las que se le muestran pero si ponen varias veces 5 u otro numero y después seleccionan una opción de las que se muestran requiere de que presione varias veces enter para que termine la ejecución del programa :wacko:
por que pasa eso? y otra cosa, es correcto eso que estoy haciendo en default? eso de llamar a main xD
Título: Re: duda con un switch
Publicado por: ProfesorX en Viernes 1 de Octubre de 2010, 04:09
Lo que sucede es que cuando llamas a main() dentro de default, estas usando algo que de llama recursion, o sea, que estas llamando una nueva version de main(), entonces cuando termina la ejecucion del main mas interno, regresa al main mas externo, y como dentro de cada main() tienes un getchar(), entonces llamaras a getchar() tantas veces como funciones main() hayas llamado.
Entonces ahi tambien esta la respuesta a tu segunda pregunta tambien, no, no es correcto llamar a main() en default, lo correcto seria que utilizaras un ciclo do..while para hacer la validacion de la opcion del menu y regresar al inicio.
Hay ocasiones en que la recursion si es util para ciertas aplicaciones, pero este no es el caso.
Por ejemplo, un ejemplo de una funcion en que pudiera ser util la recursion es para el calculo del factorial,, es mas, te aconsejo que busques informacion de como se calcula el factorial de manera recursiva, para que te des mejor cuenta del uso de la recursion.
Saludos :)
Título: Re: duda con un switch
Publicado por: alb en Sábado 2 de Octubre de 2010, 09:52
Holà, Llamar main en el codigo es algo bastante raro. main no es una funcion como las otras. A mi me parece que utilizar la recursion en este caso no es muy apropiado porque solo te interesa la primera respuesta valida. Me paracer que usar un do...while es mas apropiado, no ?
Título: Re: duda con un switch
Publicado por: SkullFlower en Domingo 3 de Octubre de 2010, 00:45