elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 23:23  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 296 veces)
eleon

Desconectado Desconectado

Mensajes: 56


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

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 por eleon » En línea

rir3760


Desconectado Desconectado

Mensajes: 382


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

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
switch (opcion){
case 1:
case 2:
case 3:
case 4:
case 5:
  // Procesamos aqui el rango 1 .. 5
  break;
}
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

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
eleon

Desconectado Desconectado

Mensajes: 56


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

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
bool variable;
switch (variable)
{
    case true: //Instrucciones
    case false: //Instrucciones
}
 
 

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 por eleon » En línea

RHL


Desconectado Desconectado

Mensajes: 966


mental


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

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: 132



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

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:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
SWITCH
Redes
hflores07 1 390 Último mensaje 19 Junio 2004, 19:13
por el-brujo
Switch
Hardware
Neobius 8 916 Último mensaje 16 Enero 2007, 23:38
por MacSpawn
switch
Hardware
Ignor 0 242 Último mensaje 18 Marzo 2007, 14:52
por Ignor
2 pcs con switch
Redes
jjam45 6 644 Último mensaje 28 Mayo 2007, 01:14
por jjam45
uso del switch
Programación C/C++
white007 2 6,301 Último mensaje 5 Mayo 2008, 07:20
por Chino Moreno
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines