Autor Tema: Problema con if{} if{} else{}  (Leído 2726 veces)

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

Desconectado aghor

  • PIC10
  • *
  • Mensajes: 19
Problema con if{} if{} else{}
« en: 27 de Octubre de 2006, 23:29:28 »
Amigos, tengo un programa funcionando pero dentro de él tengo un tanto descuidado un bloque que me gustaria aprender a corregir. Es lo sgte:
 
  Un sensor entrega ciertos valores digamos de 0 a 255, que se relacionan con presion de 0 a 250
luego de acuerdo a exigencias, debo discriminar acciones respecto de cierto valores medidos.

if  (presion>=165 and presion<175){ presion=170;}
if (presion>=175 and presion<185){presion=180;}
else {presion= la que entregue el sensor}

lo he hecho pero de partida mi problema es que no sé como escribir una condicion > o <, yo sé que cuando es igual se usa ==.
Los if se me tornan excluyentes, o sea toma el primero pero no el segundo.
Help!!
o deberia usar un switch-case ??
 :shock:
Gracias

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Problema con if{} if{} else{}
« Respuesta #1 en: 28 de Octubre de 2006, 01:27:21 »
Para diseñar condiciones anidadas o bucles anidados lo mejor es indentarlas en el propio editor, porque de lo contrario se hace difícil seguirles la pista.

En tu ejemplo, la única incongruencia que observo es que si la presión leída está entre 165 y 175, se ejecutará la primera condición, y por lo tanto se le asigna el valor 170.
Pero justo después haces otra condicional, cuya salida negativa (else) asigna a presion la lectura del sensor, con lo que se borrará el 170 que habíamos colocado antes.

Una forma de resolverlo podría ser esta, en la que además he indentado para facilitar su lectura:

Código: C
  1. if (presion>=165 and presion<175)
  2.       presion=170;
  3.    else
  4.       if (presion>=175 and presion<185)
  5.          presion=180;
  6.       else
  7.          presion= la que entregue el sensor;

Desconectado aghor

  • PIC10
  • *
  • Mensajes: 19
Re: Problema con if{} if{} else{}
« Respuesta #2 en: 29 de Octubre de 2006, 00:14:36 »
Gracias Nocturno, acabo de darme cuenta de eso, usaré condiciones anidada mejor.

De nuevo gracias :-/


 

anything