Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Kougami en 19 Diciembre 2016, 16:42 pm



Título: Volver a ejecutar un menu en C++
Publicado por: Kougami en 19 Diciembre 2016, 16:42 pm
Buenas,
Una pregunta, existe algun modo de que si un programa tiene un menu de opciones que al elegir una opcion ejeute una serie de funciones y que cuando termine de ejecutar las opciones vuelva a aparecer el menu y pueda seleccionar otra opcion distinta??

Muchas gracias de antemano


Título: Re: Volver a ejecutar un menu en C++
Publicado por: engel lex en 19 Diciembre 2016, 16:45 pm
para eso usas while


Título: Re: Volver a ejecutar un menu en C++
Publicado por: Kougami en 19 Diciembre 2016, 16:49 pm
Como??
Aqui dejo mi codigo para que lo veas
Código
  1. /**********MENU**********/
  2.  
  3. void mostrarMenu(){
  4. cout <<"1 - Generar la serie" <<endl;
  5. cout <<"2 - Buscar en la serie"<<endl;
  6. cout <<"0 - Salir"<<endl;
  7. cout <<"Opción: ";
  8. }
  9.  
  10. bool esOpcionValida(int opc){
  11. return opc==1 || opc==2 || opc==0;
  12. }
  13.  
  14. int leerOpcion(int& opc){
  15. cin >> opc;
  16. while(cin.fail() || !esOpcionValida(opc)){
  17. cin.clear();
  18. cin.sync();
  19. cout <<"ERROR: La opción introducida no es válida" <<endl;
  20. mostrarMenu();
  21. cin >> opc;
  22. }
  23. return opc;
  24. }
  25.  
  26. int menu(int opc){
  27. mostrarMenu();
  28. opc=leerOpcion(opc);
  29. return opc;
  30. }
  31.  
  32. void _Opcion1(){
  33. generar_y_escribir();
  34. }
  35.  
  36. void _Opcion2(){
  37. int num;
  38. pedirNum (num, "Valor absoluto del elmento a buscar: ");
  39. buscar (num);
  40. mostrar (num);
  41. }
  42.  
  43. void _Opcion0(){
  44. salir();
  45. }
  46.  
  47. void ejecutarOpciones(int opc){
  48. switch(opc){
  49. case 1: _Opcion1(); break;
  50. case 2: _Opcion2(); break;
  51. case 0: _Opcion0(); break;
  52. }
  53. }
  54.  
  55. /**********MAIN**********/
  56.  
  57. int main(int argc, char** args){
  58. setlocale(LC_ALL, "spanish");
  59. int opc;
  60. opc=menu(opc);
  61. ejecutarOpciones(opc);
  62. system ("pause");
  63. return 0;
  64. }


Título: Re: Volver a ejecutar un menu en C++
Publicado por: engel lex en 19 Diciembre 2016, 17:08 pm
más facil aún porqeu lo tienes como funciones... siempre que opc no sea 0, el ciclo se repite


Título: Re: Volver a ejecutar un menu en C++
Publicado por: Kougami en 19 Diciembre 2016, 17:11 pm
Vale, osea que en el main quedaria asi:
Código
  1. int main(int argc, char** args){
  2. setlocale(LC_ALL, "spanish");
  3. int opc;
  4. while (opc!=0){
  5. opc=menu(opc);
  6. ejecutarOpciones(opc);
  7. }
  8. system ("pause");
  9. return 0;
  10. }


Título: Re: Volver a ejecutar un menu en C++
Publicado por: engel lex en 19 Diciembre 2016, 17:16 pm
si haces eso, como no asignas valor original a opc, puede contener valor, ese puede ser 0 y nunca entrar...  puedes hacerlo dandole un valor diferente a 0 o

Código
  1. do{
  2. opc=menu(opc);
  3. ejecutarOpciones(opc);
  4. }while (opc!=0);