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

 

 


Tema destacado: Estamos en la red social de Mastodon


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

Desconectado Desconectado

Mensajes: 99


Ver Perfil
Acerca de switch
« en: 21 Enero 2012, 14:56 pm »

Hi:

Tengo una duda en C++, según he leído el análisis de casos (switch) solo puede llevar un entero o caracter, ¿entonces cómo se haría para un número real o un booleano?.

Y también me gustaría saber cómo se ponen los rangos o periodos en C++, por ejemplo, en pascal para poner que se ejecute una instrucción en el caso de que la variable o contante tenga el valor del 1 al 5 se hace lo siguiente:

Código:
case variable of begin
1..5: //Instrucción a ejecutar
5..10: //Instrucción a ejecutar
end;

Como veis los dos puntos (..) le dicen al compilador que en caso de que "variable" tenga el valor del 1 al 5 se ejecute la instrucción, ¿cómo se marcan los periodos en C++?.

Gracias.


« Última modificación: 21 Enero 2012, 14:59 pm por eleon » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Acerca de switch
« Respuesta #1 en: 21 Enero 2012, 16:45 pm »

Tengo una duda en C++, según he leído el análisis de casos (switch) solo puede llevar un entero o caracter, ¿entonces cómo se haría para un número real o un booleano?.
No es posible ya que, como bien indicas, solo puedes utilizar valores enteros. En el caso de un valor booleano utilizado como expresión este resulta en 1 si es verdadero y 0 si es falso.

Y también me gustaría saber cómo se ponen los rangos o periodos en C++, por ejemplo, en pascal para poner que se ejecute una instrucción en el caso de que la variable o contante tenga el valor del 1 al 5 se hace lo siguiente:

Código:
case variable of begin
1..5: //Instrucción a ejecutar
5..10: //Instrucción a ejecutar
end;

Como veis los dos puntos (..) le dicen al compilador que en caso de que "variable" tenga el valor del 1 al 5 se ejecute la instrucción, ¿cómo se marcan los periodos en C++?.
De nuevo no es posible. Si se trata de un numero pequeño de valores puedes colocar los casos uno después del otro de esta forma:
Código
  1. switch (opcion){
  2. case 1:
  3. case 2:
  4. case 3:
  5. case 4:
  6. case 5:
  7.   // Procesamos aqui el rango 1 .. 5
  8.   break;
  9. }
Pero si el rango es mayor no hay alternativa: debes utilizar una sentencia de selección "if" en su lugar.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
eleon

Desconectado Desconectado

Mensajes: 99


Ver Perfil
Re: Acerca de switch
« Respuesta #2 en: 21 Enero 2012, 16:59 pm »

Gracias, he confirmado las dos cosas. Lo cierto es que al poner en el switch una variable booleana se puede hacer lo siguiente:

Código
  1. bool variable;
  2. switch (variable)
  3. {
  4.     case true: //Instrucciones
  5.     case false: //Instrucciones
  6. }
  7.  
  8.  

No da ningún error y se ejecuta correctamente. Una cosa a tener en cuenta es que hablo de C++ no de C.

Saludos.
« Última modificación: 21 Enero 2012, 17:01 pm por eleon » En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Acerca de switch
« Respuesta #3 en: 21 Enero 2012, 18:54 pm »

toma en cuenta que en ese ejemplo tuyo si en un expresion da como resultado true, salta al case true pero tambien se ejecuta false, para eso debes de poner la instruccion break para que haga un salto al final del switch  y tambien existe un case por defecto que se usa con la etiqueta default
En línea

El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: Acerca de switch
« Respuesta #4 en: 21 Enero 2012, 19:26 pm »

Citar
No da ningún error y se ejecuta correctamente. Una cosa a tener en cuenta es que hablo de C++ no de C.
Claro que hablas de C++, en C no existe la variable de tipo bool.
Un booleano en un switch funciona porque en definitiva un bool es un int que solo puede tener los valores 0 y 1 (false y true), es por eso que también funciona en el switch. Tambien funcionaria con valores con coma flotante (float, double) pero deberias poner switch((int)variable) con lo que harias un casting a int y perderias todos los decimales.

Un saludo.
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