Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: perujo en 8 Agosto 2017, 12:28 pm



Título: Switch y case
Publicado por: perujo en 8 Agosto 2017, 12:28 pm
Hola, tengo una duda al usar los case,al escribir esto:

switch (dia) {
   case 1: case 30:
.
.
.
}

Lo que hace es coger todos los numeros desde el 1 hasta el 30 o coge solo el caso 1 y 30?

Me podriais decir como se hace para que solo coja los casos que yo quiero? y también para que coja desde el caso 1 hasta el 30?

Gracias.


Título: Re: Switch y case
Publicado por: SubAtomicParticula en 8 Agosto 2017, 12:41 pm
Saludos, la sentencia funciona por valores por separado pero podemos agrupar por valores al omitir break;

Caso básico sería:

switch(dia){
case 1:
Funcion1();
break;
case 2:
Funcion2();
break;
case 3:
Funcion3();
break;
------
case 30:
Funcionx();
break;
}

Caso de agrupar por valores sería:

switch(dia){
case 1:
case 2:
Funcion1y2();
break;
case 3:case 4:case 5:
Funcion345();
break;
------
case 30:
Funcionx();
break;
}

Para el caso de un rango seria incluir todos los valores:
switch(dia){
case 1:case 2:case 3:case 4:case 5: <----> case 15:
Funcion1_15();
break;
------
case 30:
Funcionx();
break;
}

También puedes hacer lo siguiente:

switch(dia){
case 30:
Funcion30();
break;
default:
Funcionx();
break;
}

Con esto conseguiríamos hacer un caso para el día 30 y el resto de los días se ejecutaría el caso por defecto (default:).

Espero haberte ayudado.


Título: Re: Switch y case
Publicado por: perujo en 8 Agosto 2017, 13:44 pm
Vale muchas gracias,
entonces para hacer todos los valores del 1 al 30 por ejemplo debería escribir los 30 uno a uno verdad?


Título: Re: Switch y case
Publicado por: engel lex en 8 Agosto 2017, 15:26 pm
Vale muchas gracias,
entonces para hacer todos los valores del 1 al 30 por ejemplo debería escribir los 30 uno a uno verdad?

si, tendrías que hacerlos todos, pero sería mala practica, para eso hay herramientas... sería como tener un martillo y usar una piedra para martillar

es decir

Código
  1. if(dia >= 1 && dia <= 30)

eso ocupa los casos entre 1 y 30