Volver al menú principal sin usar goto

Iniciado por martin_poipon, 30 Junio 2011, 21:52 PM

0 Miembros y 2 Visitantes están viendo este tema.

тαптяα

Cita de: martin_poipon en  1 Julio 2011, 15:55 PM
No funciona, tira error al intentar compilar.
Lo de quitar el return, tampoco. Lo solucioné con esto:
Código (cpp) [Seleccionar]
int main();
Inicio:
....
....
goto Inicio;

Pues pon el error.. U_U

Acermax

Es que eso de return main() no tiene sentido.

Te dijeron varias veces que lo mejor es un bucle con un while, y no puedes decir que lo solucionaste con un goto, cuando tu pregunta era precisamente hacer eso sin usar goto xD

тαптяα

Cita de: Acermax en  1 Julio 2011, 15:59 PM
Es que eso de return main() no tiene sentido.

Te dijeron varias veces que lo mejor es un bucle con un while, y no puedes decir que lo solucionaste con un goto, cuando tu pregunta era precisamente hacer eso sin usar goto xD

Tu si que no tienes sentido:

#include <stdio.h>

int main(){
char st[20];
printf("Escribe la palabra: ");
scanf("%s",&st);
printf("Has escrito %s \n", st);
return main();

}

Acermax

No voy a entrar a discutir.

Ya dijeron arriba que hacer recursión sobre el main() no es recomendable, además que en un largo uso sobrecarga la memoria...

Por supuesto que sé que eso compila, pero un programa no es perfecto por el mero hecho de compilar.

Un saludo...

тαптяα

Cita de: Acermax en  1 Julio 2011, 16:16 PM
No voy a entrar a discutir.

Ya dijeron arriba que hacer recursión sobre el main() no es recomendable, además que en un largo uso sobrecarga la memoria...

Por supuesto que sé que eso compila, pero un programa no es perfecto por el mero hecho de compilar.

Un saludo...
Para ese programa creo qeu es una opción valida.

obviamente también puede usar while, ciclos, pero el user tiene la misma idea de programar C/C++ que de usar un F1, no sabe ni decirme el error que le tira algo que funciona correctamente. No le pidamos peras al olmo.

Valkyr

Si existen sentencias de control como while ¿para que hacer return main();?. Sinceramente creo que es mejor hacer uso de while que, me imagino, será más eficiente. Y por muy chorra que sea el programa si una persona que está "aprendiendo" a programar se le enseña que ,en vez de pensar un poco la lógica que debe seguir un programa, haga uso de go to y cosas similares pues... sinceramente me parece erróneo.

Eso sí, cada cual que haga lo que quiera.

Saludos.

martin_poipon

Cita de: ハセヲ, en  1 Julio 2011, 16:24 PM
Para ese programa creo qeu es una opción valida.

obviamente también puede usar while, ciclos, pero el user tiene la misma idea de programar C/C++ que de usar un F1, no sabe ni decirme el error que le tira algo que funciona correctamente. No le pidamos peras al olmo.
:-\ :-\ :-\
Puedo usar while pero no quiero ._. a menos que sea la única opción. He puesto goto para tener una solución temporal. Y sé como dar el error, lo que pasa es que no estaba en el PC cuando respondiste.. SI sé decir el error. Es este:
Marca la llave ({) de inicio de main() y dice: too few arguments to function `int main(int, char**)'
BiQuad! - Inteligencia Virtual
[X] Tener una web con el script
[] Tener más de 100 posts
[] Tener más de 100 miembros
Host: byethost (gratis)

BlackZeroX

#17
.
Si no quieres usar while for ni nada similar usa:

http://codepad.org/rbjReElT



#include <setjmp.h>
int main() {
   int _i_jmp;
   jmp_buf _jmpb_buf;

   _i_jmp = setjmp( _jmpb_buf );
  // Mas codigo..., si _i_jmp==0 es que setjmp() a fallado....
   longjmp( _jmpb_buf , 1 );
   return 0;
}



Dulces Lunas!¡.
The Dark Shadow is my passion.

franeg95

Cita de: ハセヲ, en  1 Julio 2011, 15:13 PM
¿Has probado return main(); ?


Ahí tenes un problema. Si el programa genera mucho ciclos te quedas sin stack.

Lo mejor es un while(1) si es para siempre o preguntar.

char seguir;


prinft("desea seguir ?")
seguir=getchar();

leogtz

Cita de: franeg95 en  3 Julio 2011, 05:53 AM
Ahí tenes un problema. Si el programa genera mucho ciclos te quedas sin stack.

Lo mejor es un while(1) si es para siempre o preguntar.

char seguir;


prinft("desea seguir ?")
seguir=getchar();


Sí, parece que nadie vió mi respuesta sobre el ciclo infinito. :/
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com