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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  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 1,085 veces)
Raiden

Desconectado Desconectado

Mensajes: 13



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

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.751



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

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 pm »

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.751



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

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 en un menu en switch « 1 2 3 »
Programación C/C++
poisonkhriz 27 18,033 Último mensaje 20 Marzo 2011, 19:40 pm
por Akai
Ayuda con switch(urgente)
Programación C/C++
eltyh 3 2,019 Último mensaje 5 Junio 2011, 00:17 am
por eltyh
Ayuda con el switch
Programación C/C++
MGMR 2 766 Último mensaje 31 Marzo 2015, 03:23 am
por MGMR
Ayuda con un switch
Programación C/C++
ZeroMiku 7 1,825 Último mensaje 14 Febrero 2016, 18:57 pm
por abaadoon
Switch Emulator: el falso emulador de Nintendo Switch es un timo
Noticias
wolfbcn 0 863 Último mensaje 14 Marzo 2017, 21:36 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines