Autor Tema: sentencia de comprobacion muy larga, y atoi()  (Leído 1488 veces)

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

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
sentencia de comprobacion muy larga, y atoi()
« en: 17 de Octubre de 2007, 02:46:47 »
saludos, estoy con la cabeza a punto de estalla, asi que si escribo una barbaridad, disculpenme, jeje, tb el sueño hace los efectos  :lol:

hice esto:
Código: [Seleccionar]
if((grad1!=15&&grad1!=30&&grad1!=45&&grad1!=60&&grad1!=75&&grad1!=90)||(grad2!=18&&grad2!=36&&grad2!=54&&grad2!=72&&grad2!=90))
         printf("\r\n error \r\n");
      else
         printf("\r\n ok \r\n");
un if muy largo, jeje, es que quiero comprobar valores de grad1 y grad2 si son distintos a esos valores (los del codigo 15 30...) dar error, si son los necesitados (los correctos) entondes dar ok

existe una forma mas comprimida de hacerlo??


una pregunta mas, el atoi() convierte un array de 'caracteres numeros' a entero??, si no es asi (y es lo que creo, segun vi en lo que pasa en mi programa) hay alguna forma facil de convertir un array de 'caracteres numeros' a entero??
.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: sentencia de comprobacion muy larga, y atoi()
« Respuesta #1 en: 17 de Octubre de 2007, 03:44:08 »
¿Te servirá esto?

Código: C
  1. if((grad1%15!=0)||(grad2%18!=0))
  2.          printf("\r\n error \r\n");
  3.       else
  4.          printf("\r\n ok \r\n");

El operador % calcula el resto de la división del primer operando entre el segundo. Si el resto es 0, es equivalente a decir que el primer operando es múltiplo del segundo.
En el caso que yo he escrito hay una diferencia con el tuyo. En mi caso el valor grad1=0 o grad2=0 darán Ok, y en tu programa no. Si quieres evitarlo tendrás que añadir una condición adicional para evitar que salte cuando uno de los dos sea cero.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: sentencia de comprobacion muy larga, y atoi()
« Respuesta #2 en: 17 de Octubre de 2007, 14:16:16 »
umm si, es muy buena solucion, y para verificar que no sea mayor a 90, un if mas verdad??
.