elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Validación para que el programa solo permita ingreso de numeros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Validación para que el programa solo permita ingreso de numeros  (Leído 1,677 veces)
jorge palermo

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Validación para que el programa solo permita ingreso de numeros
« 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;


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Validación para que el programa solo permita ingreso de numeros
« Respuesta #1 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ú.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines