Autor Tema: Quiero ingresar condiciones utilizando "switch case" pero tengo errores.  (Leído 2078 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Joshuegp

  • PIC10
  • *
  • Mensajes: 7
Hola,

Estoy tomando los valores de un ADC, para ello colocar condiciones sin usar los "if" , ni "else if" y así sucesivamente. Por ello, opté por usar el "switch case", pero estoy teniendo demasiado errores, quisiera saber si alguien ha trabajado con ello y si podrían indicarme cual es la manera correcta o, cómo podría ser la forma adecuada. Dejo la parte del código:

float Vin;
int estadoSW;

.........

estadoSW =Vin;
                switch(estadoSW){
                    case (Vin>=0)&&(Vin<0.625):    // en vez de colocar "case 1" quiero colocar condiciones "case (condición)".
                     XLCDgotoXY(1,0);
                     putcXLCD(0);
                     __delay_ms(500);
                    break;



Y la falla que me aparece es la siguiente:

error: (188) constant expression required



Muy agradecido por el apoyo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Quiero ingresar condiciones utilizando "switch case" pero tengo errores.
« Respuesta #1 en: 05 de Abril de 2020, 22:39:45 »
Citar
error: (188) constant expression required

Algunas cosas que necesitas saber del switch..case

Solo números sin signo y enteros. Y los case son valores fijos... Ejemplo:

Código: C
  1. switch(estados)
  2. {
  3.        case 1:
  4.        case 2:
  5.        case 3:
  6.        default:
  7. }

Podes observar que en los case, son valores FIJOS, y no algo a evaluar como vos escribiste:

case (Vin>=0)&&(Vin<0.625):

Si queres separarlo cada 0.625 entonces podrias hacer:

Código: C
  1. estadoSW = Vin/0.625;
  2. switch(estadoSW){
  3.   case 0:  //entre 0 y 0.625
  4.   case 1: // entre 0.625 inclusive y 1.25
  5.   case 2: // entre 1.25 inclusive y 1.875
  6.   default: // Caso que no esta incluido en los anteriores.
  7. }

Desconectado Joshuegp

  • PIC10
  • *
  • Mensajes: 7
Re:Quiero ingresar condiciones utilizando "switch case" pero tengo errores.
« Respuesta #2 en: 05 de Abril de 2020, 22:59:12 »
Citar
Si queres separarlo cada 0.625 entonces podrias hacer:

Estimado, muy agradecido. Me resultó excelente dicha solución.

Citar
case (Vin>=0)&&(Vin<0.625):

Ahora, si tengo varias condiciones y ya no son correlativas, solo me quedaría usar las condición "if", "else if" o hay algún otro método o condiciones para evitar el uso de estos, ya que los "switch(case)" no evaluan.


Gracias.




Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Quiero ingresar condiciones utilizando "switch case" pero tengo errores.
« Respuesta #3 en: 06 de Abril de 2020, 00:13:48 »
No te queda mas que usar if/else.

Aunque podés inventar algo con un for y un if, pero no sé si sería más sencillo.
« Última modificación: 06 de Abril de 2020, 00:16:27 por KILLERJC »


 

anything