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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Volver al menú principal sin usar goto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Volver al menú principal sin usar goto  (Leído 16,026 veces)
martin_poipon

Desconectado Desconectado

Mensajes: 29


Mis metas: Dominar C++ & PHP


Ver Perfil WWW
Volver al menú principal sin usar goto
« en: 30 Junio 2011, 21:52 pm »

Hola!

Tengo este código:
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. void pMenu();
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10.    char opcion;
  11.    //Valores bucle FOR
  12.    int vInicial;
  13.    int vFinal;
  14.    int Paso;
  15.    //Valores bucle WHILE
  16.    int Y;
  17.    int Z;
  18.    //Imprimir menú
  19.    pMenu();
  20.    cin >> opcion;
  21.    switch(opcion)
  22.    {
  23.                  case '1':
  24.                       system("CLS");
  25.                       cout << "Valor inicial del bucle:\r\n";
  26.                       cin >> vInicial;
  27.                       system("CLS");
  28.                       cout << "Valor final del bucle:\r\n";
  29.                       cin >> vFinal;
  30.                       system("CLS");
  31.                       cout << "Paso: (suma)\r\n";
  32.                       cin >> Paso;
  33.                       for(int i=vInicial;i<=vFinal;i=i+Paso)
  34.                               {
  35.                                                              cout << i;
  36.                               }
  37.                       break;
  38.                  case '2':
  39.                       system("CLS");
  40.                       cout << "Mientras que Y <= Z (mientras\r\nque Y sea igual o mayor que Z), escribe el valor de Y:";
  41.                       cin >> Y;
  42.                       system("CLS");
  43.                       cout << "Escribe el valor de Z:";
  44.                       cin >> Z;
  45.                       system("CLS");
  46.                       cout << "Paso:";
  47.                       cin >> Paso;
  48.                       system("CLS");
  49.                       while(Y<=Z)
  50.                       {
  51.                                 Y+=Paso;
  52.                       }
  53.                       break;
  54.                  case '3':
  55.                       system("CLS");
  56.                       cout << "system(\"PAUSE\"); funciona así:";
  57.                       system("PAUSE");
  58.                       break;
  59.                  case '4':
  60.                       system("CLS");
  61.                       cout << "system(\"PAUSE>NUL\") funciona así: (presiona\r\n alguna tecla para salir)";
  62.                       system("PAUSE>NUL");
  63.                       break;
  64.  
  65.                  default:
  66.                          cout << "La opción seleccionada no es válida.";
  67.                          system("PAUSE");
  68.                          break;
  69.    }
  70.    return EXIT_SUCCESS;
  71. }
  72.  
  73. void pMenu()
  74. {
  75.    cout << "            BIENVENIDO            \r\n\r\n";
  76.    cout << "Escoge una opción:\r\n";
  77.    cout << "1.- Bucle \"for\" de X a Y\r\n";
  78.    cout << "2.- Bucle \"while\" de X a Y\r\n";
  79.    cout << "3.- system(\"PAUSE\")\r\n";
  80.    cout << "4.- system(\"PAUSE>NUL\")\r\n";
  81. }
  82.  

¿Cómo hago para que, después de hacer todo lo del switch, vuelva a empezar por int main()?

PD: Acepto críticas y sugerencias sobre el código, pues es mi primer código que funciona ;D


En línea

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)
madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Volver al menú principal sin usar goto
« Respuesta #1 en: 30 Junio 2011, 22:24 pm »

Creo que con algo así, serviría:

Código
  1. int main(int argc, char *argv[]) {
  2.  
  3. char continue = 'c';
  4.  
  5.  while(continue == 'c'){
  6.  
  7.      //Aqui van las instrucciones
  8.  
  9.  
  10.       system("pause");
  11.       cout << "Pasa salir pulsa X . Si deseas seguir, pulsa C : ";
  12.       cin >>continue;
  13.       //Si se introduce C, las instrucciones se vuelven a ejecutar
  14.  
  15.  }
  16. }


Si esto es lo que quieres, asegurate de cambiar system("pause") por otra cosa.


En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Volver al menú principal sin usar goto
« Respuesta #2 en: 30 Junio 2011, 22:34 pm »

Código
  1. #include <cstdio>
  2.  
  3. int main()
  4. {
  5. printf("Hola!");
  6.  
  7. main();
  8.  
  9. return 0;
  10. }
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
martin_poipon

Desconectado Desconectado

Mensajes: 29


Mis metas: Dominar C++ & PHP


Ver Perfil WWW
Re: Volver al menú principal sin usar goto
« Respuesta #3 en: 30 Junio 2011, 23:45 pm »

Lo siento, pero no funciona el return 0;
Y lo de 'C', no es eso lo que quiero, quiero que, al llegar al break; y salir del switch(), que vaya de nuevo a int main() y que empieza a leer todo de nuevo.

Gracias
En línea

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)
Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Volver al menú principal sin usar goto
« Respuesta #4 en: 1 Julio 2011, 00:06 am »

Pues quita el return, da igual, pero la solución es ésta...
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Volver al menú principal sin usar goto
« Respuesta #5 en: 1 Julio 2011, 00:08 am »

Pues quita el return, da igual, pero la solución es ésta...

No es buena costumbre usar recursión con main(), los nuevos estándares no lo

¿por qué no usas un ciclo infinito?
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: Volver al menú principal sin usar goto
« Respuesta #6 en: 1 Julio 2011, 09:38 am »

return main()
En línea

hari

Desconectado Desconectado

Mensajes: 51



Ver Perfil
Re: Volver al menú principal sin usar goto
« Respuesta #7 en: 1 Julio 2011, 13:12 pm »

Yo para los menús usaría algo así como un bucle while, en el cuál salga cuando yo quiera con un bool.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main(){
  6.   bool salir = false;
  7.   char eleccion;
  8.  
  9.   do{ //(While (!salir)
  10.      cout << "Escoja una opción" << endl;
  11.      cin >> eleccion;
  12.      //Aquí irían todas tus opciones con un switch case ó con un if else
  13.      //Te pongo el ejemplo con un if else
  14.      if(eleccion == s)
  15.         salir == true;
  16.      else if(eleccion == p){
  17.         cout << "Has tecleado la letra P" << endl;
  18.         //Aquí podrías poner todo el código que quisieses cuando teclea P, al terminar volverá al menú
  19.         }
  20.   }while(!salir)
  21. }
  22.  
  23.  
« Última modificación: 1 Julio 2011, 13:13 pm por hari » En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: Volver al menú principal sin usar goto
« Respuesta #8 en: 1 Julio 2011, 15:13 pm »

¿Has probado return main(); ?
En línea

martin_poipon

Desconectado Desconectado

Mensajes: 29


Mis metas: Dominar C++ & PHP


Ver Perfil WWW
Re: Volver al menú principal sin usar goto
« Respuesta #9 en: 1 Julio 2011, 15:55 pm »

¿Has probado return main(); ?

No funciona, tira error al intentar compilar.
Lo de quitar el return, tampoco. Lo solucioné con esto:
Código
  1. int main();
  2. Inicio:
  3. ....
  4. ....
  5. goto Inicio;
En línea

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)
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
crear un pelicula con un menu principal
Multimedia
Luish@o 3 4,332 Último mensaje 7 Noviembre 2009, 14:40 pm
por Axus
(solucionado)volver menu principal
Programación C/C++
cundre 7 6,557 Último mensaje 11 Febrero 2011, 17:18 pm
por cundre
[Lenguaje C] Volver al menu principal « 1 2 »
Programación C/C++
Whiteseba 11 24,558 Último mensaje 5 Marzo 2012, 01:28 am
por Whiteseba
netbeans abrir ventana secuandaria y volver a los procesos de la principal
Java
PhipexX 2 2,728 Último mensaje 2 Enero 2017, 19:05 pm
por ThinkByYourself
"Ayuda" No se como volver al menu principal C#
Programación C/C++
MaximuZ 1 4,635 Último mensaje 6 Junio 2017, 06:28 am
por yoelmend
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines