Comparaciones if && <>

Hola, me podrian decir si esto es correcto?

  if (valor<= 200){ 
    Serial.println ("OK");
  }

  else if ((valor > 200) && (valor <= 500));{
    Serial.println ("No muy bien");
  }

  if (valor > 500){
    Serial.println ("Muy mal");
  }

Cuando hay valores < a 200, me imprime a la vez "OK" y "No muy bien", porque tambien son < a 500. Como arreglarlo.

Gracias.

if (valor<= 200){
    Serial.println ("OK");
}

else {

     if (valor <= 500){
          Serial.println ("No muy bien");
     }

     else {
          Serial.println ("Muy mal");
     }
}

Pruebalo asi. No lo probe, lo hice aqui pero la idea es:

Lo que va en el else tambien va entre corchetes y no tiene sentido preguntar las cosas dos veces. Si pasa el primer else es porque es mayor de 200 y si pasa el segundo es porque es mayor de 500.

Quizas tenga un error al escribir pero si no te funciona quedate con la idea.

Saludos.

Pues no, así tampoco me va. :confused:

Lo he ampliado y me queda así:

if (valor <= 50){
   Serial.println ("A");
  }
else{

  if (valor > 50 && valor <= 200);{ 
    Serial.println ("B");
  }

  if (valor > 200&& valor <= 300);{ 
     Serial.println ("C");
  }
  if (valor > 300 && valor <= 400){ 
    Serial.println ("D");
 }
  if (valor > 400 && valor <= 500){
    Serial.println ("E"); 
  }
  if (valor > 500){
    Serial.println ("F"); 
  }
  }

Yo ahora no tengo para probarlo, pero la idea que te puse esta "conceptualmente bien", otra cosa es que me sobre o me falte alguna llave al compilar, puede ser.

Eres redundante en lo que preguntas, en el codigo me refiero.

Si le preguntas a valor si es menor que 50, en el caso que no lo sea para la siguiente cuestion no debes preguntarle si es mayor puesto que ya sabes que lo es y asi sucesivamente.

Debes entender que si pones else, sólo entrará si no se cumplió la condición anterior. Es decir, si todas las condiciones van encadenadas con else, saldrá de todas en cuanto se cumpla una:

if (valor <=50) {
//código
} else if (valor <= 200) { // por fuerza debe ser mayor a cincuenta, o no habría entrado en el else
//código
} else if (valor <= 300) { // por fuerza debe ser mayor a 200, o no habría entrado en el else
//código
} else if (valor <= 400) { // por fuerza debe ser mayor a 300, o no habría entrado en el else
//código
} else if (valor <= 500) { // por fuerza debe ser mayor a 500, o no habría entrado en el else
else { // aquí sólo llegará si no entró en ninguno de los if encadenados, por fuerza si es mayor a 500
//código
}

Lo siento, pero tampoco.

No me deja poner un else si no hay un if immediatamente anterior. No puedo poner arriba de todo un solo if y luego muchos else.

Señores, muchas gracias!! Disculpen las molestias, era un error mio. Habia detras de else y antes del corchete un ; innecesario que era el culpable.

Muchas gracias a los dos, un saludo! :wink:

Entonces ahora agrega SOLUCIONADO a tu título.