Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]
/**********MENU**********/

void mostrarMenu(){
cout <<"1 - Generar la serie" <<endl;
cout <<"2 - Buscar en la serie"<<endl;
cout <<"0 - Salir"<<endl;
cout <<"Opción: ";
}

bool esOpcionValida(int opc){
return opc==1 || opc==2 || opc==0;
}

int leerOpcion(int& opc){
cin >> opc;
while(cin.fail() || !esOpcionValida(opc)){
cin.clear();
cin.sync();
cout <<"ERROR: La opción introducida no es válida" <<endl;
mostrarMenu();
cin >> opc;
}
return opc;
}

int menu(int opc){
mostrarMenu();
opc=leerOpcion(opc);
return opc;
}

void _Opcion1(){
generar_y_escribir();
}

void _Opcion2(){
int num;
pedirNum (num, "Valor absoluto del elmento a buscar: ");
buscar (num);
mostrar (num);
}

void _Opcion0(){
salir();
}

void ejecutarOpciones(int opc){
switch(opc){
case 1: _Opcion1(); break;
case 2: _Opcion2(); break;
case 0: _Opcion0(); break;
}
}

/**********MAIN**********/

int main(int argc, char** args){
setlocale(LC_ALL, "spanish");
int opc;
opc=menu(opc);
ejecutarOpciones(opc);
system ("pause");
return 0;
}
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 (cpp) [Seleccionar]
int main(int argc, char** args){
setlocale(LC_ALL, "spanish");
int opc;
while (opc!=0){
opc=menu(opc);
ejecutarOpciones(opc);
}
system ("pause");
return 0;
}
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 (cpp) [Seleccionar]
do{
opc=menu(opc);
ejecutarOpciones(opc);
}while (opc!=0);