Título: Validación para que el programa solo permita ingreso de numeros Publicado por: jorge palermo en 9 Septiembre 2019, 02:00 am Hola, alguien podría ayudarme con mi programa. Tengo mi programa que es de un restaurante en el que tienes que ingresar lo que comerás para almuerzo, bebida y postre. El programa te da las cantidades y precios tipo factura, todo bien por ahí, el problema es que necesito que cuando ingrese cualquier carácter que no sea un numero el programa te permita volver a seleccionar la opción correcta para cada opción. Si alguien podría ayudarme con esto se lo agradecería mucho.
#include <iostream> using namespace std; const float torta=20000; const float helado=15000; const float oferta_postre=8000; const float sopa=15000; const float arroz_pollo=25000; const float pasta_bolona=35000; const float oferta_almuerzo=15000; const float jarra_jugo=15000; const float vaso_jugo=5000; const float jarra_agua=10000; const float vaso_agua=3000; float total = 0; int continuar = 0; int acum_op1 = 0; int acum_op2 = 0; int acum_op3 = 0; int acum_op4 = 0; int acum_op5 = 0; int acum_op6 = 0; int acum_op7 = 0; int acum_op8 = 0; int acum_op9 = 0; int acum_op10 = 0; int acum_op11 = 0; int opcion=0; void pedido(int op){ int cantidad = 0; cout<<"Ingrese la cantidad a pedir: "<<endl; cin>>cantidad; switch(op) { case 1: total = total + (sopa * cantidad); acum_op1 = acum_op1 + cantidad; break; case 2: total = total + (arroz_pollo * cantidad); acum_op2 = acum_op2 + cantidad; break; case 3: total = total + (pasta_bolona * cantidad); acum_op3 = acum_op3 + cantidad; break; case 4: total = total + (oferta_almuerzo * cantidad); acum_op4 = acum_op4 + cantidad; break; case 5: total = total + (jarra_jugo * cantidad); acum_op5 = acum_op5 + cantidad; break; case 6: total = total + (vaso_jugo * cantidad); acum_op6 = acum_op6 + cantidad; break; case 7: total = total + (jarra_agua * cantidad); acum_op7 = acum_op7 + cantidad; break; case 8: total = total + (vaso_agua * cantidad); acum_op8 = acum_op8 + cantidad; break; case 9: total = total + (torta * cantidad); acum_op9 = acum_op9 + cantidad; break; case 10: total = total + (helado * cantidad); acum_op10 = acum_op10 + cantidad; break; case 11: total = total + (oferta_postre * cantidad); acum_op11 = acum_op11 + cantidad; break; default: cout<<"Ingreso una opción invalida"<<endl; break; } } void submenu(int op){ int plato = 0; if(op == 1) { cout <<"En el almuerzo hay: "<<endl<<endl; cout <<"1) Sopa = 15000 "<<endl; cout <<"2) Arroz con Pollo = 25000 "<<endl; cout <<"3) Pasta Boloñesa = 35000 "<<endl; cout <<"4) OFERTA Especial = 15000 (1 bebida y Arroz con Salsa) "<<endl<<endl; cin>>plato; if(plato >= 1 && plato <= 4){ pedido(plato); } else{ cout<<"Ingreso una opción invalida"<<endl; submenu(op); } } else if(op == 2) { cout <<"De bebida tenemos: "<<endl<<endl; cout <<"5) Jarra de Jugo = 15000 "<<endl; cout <<"6) Vaso de Jugo = 5000 "<<endl; cout <<"7) Jarra de Agua = 10000 "<<endl; cout <<"8) Vaso de Agua = 3000 "<<endl; cin>>plato; if(plato >= 5 && plato <= 8){ pedido(plato); } else{ cout<<"Ingreso una opción invalida"<<endl; submenu(op); } } else{ cout <<" De postre hay: "<<endl<<endl; cout <<"9)torta = 20000 "<<endl; cout <<"10)helado = 15000 "<<endl; cout <<"11)OFERTA ESPECIAL = 8000 (1 cafe y galletas dulces) "<<endl<<endl; cin>>plato; if(plato >= 9 && plato <= 11){ pedido(plato); } else{ cout<<"Ingreso una opción invalida"<<endl; submenu(op); } } } void menu(){ cout<<"1) Almuerzo"<<endl; cout<<"2) Bebida"<<endl; cout<<"3) Postre"<<endl; cin>>opcion; switch(opcion){ case 1: submenu(1); break; case 2: submenu(2); break; case 3: submenu(3); break; default: cout<<"Ingreso una opción invalida"<<endl; menu(); break; } while(continuar != 1 and continuar != 2){ cout<<"¿Desea pedir algo más? Si=1;No=2"<<endl; cin>>continuar; } if(continuar==1){ continuar=0; menu(); } else{ cout<<"\n*** PEDIDO *** "<<endl<<endl; if(acum_op1 >0 ){ cout<<acum_op1<<" Sopa"<<endl<<endl; } if(acum_op2 >0 ){ cout<<acum_op2<<" Arroz con Pollo"<<endl<<endl; } if(acum_op3 >0 ){ cout<<acum_op3<<" Pasta Boloñesa"<<endl<<endl; } if(acum_op4 >0 ){ cout<<acum_op4<<" OFERTA Especial (1 bebida y Arroz con Salsa)"<<endl<<endl; } if(acum_op5 >0 ){ cout<<acum_op5<<" Jarra de Jugo"<<endl<<endl; } if(acum_op6 >0 ){ cout<<acum_op6<<" Vaso de Jugo"<<endl<<endl; } if(acum_op7 >0 ){ cout<<acum_op7<<" Jarra de Agua"<<endl<<endl; } if(acum_op8 >0 ){ cout<<acum_op8<<" Vaso de Agua"<<endl<<endl; } if(acum_op9 >0 ){ cout<<acum_op9<<" Torta"<<endl<<endl; } if(acum_op10 >0 ){ cout<<acum_op10<<" Helado"<<endl<<endl; } if(acum_op11 >0 ){ cout<<acum_op11<<" OFERTA ESPECIAL (1 cafe y galletas dulces)"<<endl<<endl; } cout<<"Total a Pagar: "<<total<<endl<<endl; } } int main(int argc, char *argv[]) { cout<<"*** BIENVENIDOS AL RESTAURANTE BONIN ***"<<endl<<endl<<endl; cout<<" ** ¿ QUE DESEA ORDENAR ? ** "<<endl<<endl; menu(); return 0; Título: Re: Validación para que el programa solo permita ingreso de numeros Publicado por: MAFUS en 9 Septiembre 2019, 09:07 am Captura carácter a carácter. Comprueba si es número. Sí lo es lo acumulas para el resultado y si no lo es mandas al usuario de regreso al menú.
|