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


 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda Switch no defaultea
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda Switch no defaultea  (Leído 438 veces)
Raiden

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Ayuda Switch no defaultea
« en: 3 Septiembre 2020, 23:19 »

Hola a todos,

Tengo un problema con un codigo, este tiene un swtich pero no puedo hacerlo funcionar bien..
Apreto 1,2,3,4,5,6,7 u 8 y anda perfecto pero cuando apreto 9 o 10 no activa el mecanismo de default, alguien sabe porque me sucede eso?

Aqui le dejo el codigo:
Código:
#include <iostream>
using namespace std;
int main()
{
    int NumProducto=0;
   
   
    while(NumProducto!=-1)
    {
    cout<<"Introduzca Numero de Caso: ";cin>>NumProducto;

    switch (NumProducto)
    {
       
         case 1:
        cout<<"CASO 1"<<endl;
         break;
         case 2:
        cout<<"CASO 2"<<endl;
         break;
         case 3:
        cout<<"CASO 3"<<endl;
         break;
         case 4:
        cout<<"CASO 4"<<endl;
         break;
         case 5:
        cout<<"CASO 5"<<endl;
        break;
        case '\n':
        case '\t':
        case ' ':
            break;
               
    default:
        cout<<"Numero incorrecto."<<endl;
        cout<<"Numero incorrecto."<<endl;
        cout<<"Numero incorrecto."<<endl;
        cout<<"Numero incorrecto."<<endl;
        cout<<endl;
    }
}
system("Pause");
return 0;
}



Gracias.


En línea

EdePC
Colaborador
***
Desconectado Desconectado

Mensajes: 1.325



Ver Perfil
Re: Ayuda Switch no defaultea
« Respuesta #1 en: 4 Septiembre 2020, 03:09 »

Saludos,

- El problema está en tus:

Código
  1.      case '\n':
  2.      case '\t':
  3.      case ' ':

- Pues como estás comparando un Integer con esos Char hay que traducir los Char a Int: 10, 9 y 32 respectivamente. Tu Default no funciona con 10, 9 y 32 por esa razón, ya que entran en ese Case librándose del Default


En línea

Raiden

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Re: Ayuda Switch no defaultea
« Respuesta #2 en: 7 Septiembre 2020, 23:28 »

Entiendo, pero como hago para hacer que no entren en el ultimo case cuando apreto 9?

Poruqe el ultimo case deberia activarse solamente cuadno envio una nueva linea es decir \n por ejemplo.

En línea

EdePC
Colaborador
***
Desconectado Desconectado

Mensajes: 1.325



Ver Perfil
Re: Ayuda Switch no defaultea
« Respuesta #3 en: 8 Septiembre 2020, 01:43 »

Pues como dije, haber, como estás usando un Int para guardar la entrada por teclado, pues pasa que tus Case hacen comparación con dicho Int, es decir, tu código sería idéntico al siguiente:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6.  
  7.  int NumProducto = 0;
  8.  
  9.  cout << "\\n => " << (int)'\n' << endl;
  10.  cout << "\\t => " << (int)'\t' << endl;
  11.  cout << "   => " << (int)' ' << endl;
  12.  
  13.  while(NumProducto != -1) {
  14.    cout << "Introduzca Numero de Caso: ";
  15.    cin >> NumProducto;
  16.  
  17.    switch (NumProducto) {
  18.      case 1:
  19.        cout << "CASO 1" << endl;
  20.        break;
  21.      case 2:
  22.        cout << "CASO 2" << endl;
  23.        break;
  24.      case 3:
  25.        cout << "CASO 3" << endl;
  26.        break;
  27.      case 4:
  28.        cout << "CASO 4" << endl;
  29.        break;
  30.      case 5:
  31.        cout << "CASO 5" << endl;
  32.        break;
  33.      case 10:
  34.      case 9:
  35.      case 32:
  36.        break;
  37.      default:
  38.        cout << "Numero incorrecto." << endl;
  39.        cout << "Numero incorrecto." << endl;
  40.        cout << "Numero incorrecto." << endl;
  41.        cout << "Numero incorrecto." << endl;
  42.        cout << endl;
  43.    }
  44.  }
  45.  system("Pause");
  46.  return 0;
  47. }
  48.  

cin omite el Enter o salto de línea '\n' cuando asigna la variable, además no asigna la variable hasta que se introduzca algún valor que no sea simplemente Enter, así que no lo vas a poder recuperar si solo usas cin sin más.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con el switch
Programación C/C++
MGMR 2 553 Último mensaje 31 Marzo 2015, 03:23
por MGMR
Ayuda con switch en c urgenteeee
Programación C/C++
kevin lozano 96 0 558 Último mensaje 29 Mayo 2015, 22:17
por kevin lozano 96
Ayuda con un switch
Programación C/C++
ZeroMiku 7 1,534 Último mensaje 14 Febrero 2016, 18:57
por abaadoon
Ayuda con Switch anidados
Java
Fryuio 3 4,892 Último mensaje 3 Diciembre 2016, 22:55
por ivancea96
Switch Emulator: el falso emulador de Nintendo Switch es un timo
Noticias
wolfbcn 0 716 Último mensaje 14 Marzo 2017, 21:36
por wolfbcn
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines