Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mariano96 en 24 Febrero 2015, 01:49 am



Título: Menu string
Publicado por: mariano96 en 24 Febrero 2015, 01:49 am
Hola, tengo una duda a la hora de hacer un menú que devuelva la opción elegida por el usuario: el problema es que tengo que hacer un do-while para que vaya verificando si la opción es correcta y hay opciones numéricas (1,2,3,etc) y una letra(q-para salir-).

string menu(){

   string opcion;

do{
   1-
   2-
   etc
   q-

 }while(opcion.length()>1 || opcion[0]=='0' || (opcion[0]>'q' || opcion[0]<'q'));

}

Al teclear 0 o una letra distinta de 'q' sí que se repite el do-while, pero se repite al teclear un número del 1 al 9 y no quiero que ocurra eso. A ver si me podéis ayudar.
Gracias de antemano.


Título: Re: Menu string
Publicado por: MellaSystems en 24 Febrero 2015, 02:22 am
mira este menu y dime si te parece correcto:

Código
  1. #include <iostream>
  2.  
  3. main(){
  4. int OpcMen;
  5. int sigue = 1;
  6. do {
  7. system("cls");
  8. system("color 9F");
  9. std::cout<<"\TITULO AQUI\n"<<std::endl;
  10. std::cout<<"\t1.  "<<std::endl;
  11. std::cout<<"\t2.  "<<std::endl;
  12. std::cout<<"\t3.  "<<std::endl;
  13. std::cout<<"\t0.  Pulse cero Salir"<<std::endl<<std::endl;
  14. std::cout<<"\t    Ingrese su opci\242n: ";
  15.        while(!(std::cin>>OpcMen))
  16.           {
  17.    std::cin.clear();
  18.    std::string error;
  19.    std::cin>>error;
  20.            std::cout<<"\n\tLA OPCI\340N INGRESADA NO EXISTE"<<std::endl;
  21.     std::cout<<"\n\tIngrese su opci\242n nuevamente: ";
  22.           }
  23. switch(OpcMen) {
  24. case 1:
  25. //lo que quieres que haga en esta opcion
  26. break;
  27. case 2:
  28. //lo que quieres que haga en esta opcion
  29. break;
  30. case 3:
  31. //lo que quieres que haga en esta opcion
  32. break;
  33. case 0:
  34. sigue = 0;
  35. break;
  36. default:
  37. std::cout<<"\t\tLA OPCI\340N INGRESADA NO EXISTE"<<std::endl;
  38.    system("pause");
  39. }
  40. } while(sigue);
  41. }
  42.  

ese es un menu con do-while usando switch


Título: Re: Menu string
Publicado por: rir3760 en 24 Febrero 2015, 04:43 am
tengo una duda a la hora de hacer un menú que devuelva la opción elegida por el usuario: el problema es que tengo que hacer un do-while para que vaya verificando si la opción es correcta y hay opciones numéricas (1,2,3,etc) y una letra(q-para salir-).
Solo tienes que leer la opción como un carácter, continuación realizas la operación correspondiente de acuerdo con el enunciado de tu programa, mas o menos así:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. int main()
  7. {
  8.   char opcion;
  9.   bool salir;
  10.  
  11.   salir = false;
  12.   do {
  13.      cin >> opcion;
  14.  
  15.      switch (opcion){
  16.      case '0':
  17.         cout << "La opcion es 0" << endl;
  18.         break;
  19.      case '1':
  20.         cout << "La opcion es 1" << endl;
  21.         break;
  22.      case '2':
  23.         cout << "La opcion es 2" << endl;
  24.         break;
  25.      case 'q':
  26.         cout << "La opcion es q" << endl;
  27.         salir = true;
  28.         break;
  29.      default:
  30.         cout << "Opcion no valida" << endl;
  31.         break;
  32.      }
  33.   }while (!salir);
  34.  
  35.   return 0;
  36. }

Un saludo


Título: Re: Menu string
Publicado por: mariano96 en 24 Febrero 2015, 11:34 am
Gracias por responder. Me sirvió.