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.
mira este menu y dime si te parece correcto:
#include <iostream>
main(){
int OpcMen;
int sigue = 1;
do {
system("cls");
system("color 9F");
std::cout<<"\TITULO AQUI\n"<<std::endl;
std::cout<<"\t1. "<<std::endl;
std::cout<<"\t2. "<<std::endl;
std::cout<<"\t3. "<<std::endl;
std::cout<<"\t0. Pulse cero Salir"<<std::endl<<std::endl;
std::cout<<"\t Ingrese su opci\242n: ";
while(!(std::cin>>OpcMen))
{
std::cin.clear();
std::string error;
std::cin>>error;
std::cout<<"\n\tLA OPCI\340N INGRESADA NO EXISTE"<<std::endl;
std::cout<<"\n\tIngrese su opci\242n nuevamente: ";
}
switch(OpcMen) {
case 1:
//lo que quieres que haga en esta opcion
break;
case 2:
//lo que quieres que haga en esta opcion
break;
case 3:
//lo que quieres que haga en esta opcion
break;
case 0:
sigue = 0;
break;
default:
std::cout<<"\t\tLA OPCI\340N INGRESADA NO EXISTE"<<std::endl;
system("pause");
}
} while(sigue);
}
ese es un menu con do-while usando switch
Cita de: mariano96 en 24 Febrero 2015, 01:49 AMtengo 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í:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
char opcion;
bool salir;
salir = false;
do {
cin >> opcion;
switch (opcion){
case '0':
cout << "La opcion es 0" << endl;
break;
case '1':
cout << "La opcion es 1" << endl;
break;
case '2':
cout << "La opcion es 2" << endl;
break;
case 'q':
cout << "La opcion es q" << endl;
salir = true;
break;
default:
cout << "Opcion no valida" << endl;
break;
}
}while (!salir);
return 0;
}
Un saludo
Gracias por responder. Me sirvió.