Volver a ejecutar un menu en C++

Iniciado por Kougami, 19 Diciembre 2016, 16:42 PM

0 Miembros y 1 Visitante están viendo este tema.

Kougami

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

engel lex

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Kougami

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;
}

engel lex

más facil aún porqeu lo tienes como funciones... siempre que opc no sea 0, el ciclo se repite
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Kougami

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;
}

engel lex

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);
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.