SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: © Jonathan © en Sábado 20 de Diciembre de 2003, 16:41

Título: Disminuir Codigo En Uso De If
Publicado por: © Jonathan © en Sábado 20 de Diciembre de 2003, 16:41
Hola a todos, voy a preguntar algo simple, creo.
   En el siguiente codigo, como puedo simplificar lo que necesito.

   Si deseo hacer lo siguiente:

Código: Text
  1.  
  2. if ((H == '1') || (H == '2') || (H == '3') || (H == '4') || (H == '5') || (H == '6') ||
  3.           (H == '7') || (H == '8'))
  4.  

   Como puedo simplificar esto para que sea por ejemplo:
Código: Text
  1.  
  2.  if (H == octal)
  3.  

   Pero que (octal) sea el reemplazo de 1, 2, 3, 4, 5, 6, 7 y 8.
   Aparte de con numero tambien deseo hacerlo con letras.

   Espero halla una solucion, ya que si no me volvere loco escribiendo codigo.  :blink:
Título: Re: Disminuir Codigo En Uso De If
Publicado por: Martin Candurra en Sábado 20 de Diciembre de 2003, 17:42
Mira no se si es lo que buscas pero en ese caso, tenes la "suerte" de que los valores por los que preguntas son correlativos en valor ascii. Es decir podrias preguntar tranquilamente

if (H>='1' && H<= '8') {
   .....
}

En caso de que solo haya sido así tu ejemplo, y no haya ninguna correlación (por ejemplo querrías pregutnar por '1', '4','6','8','a',F','C')
podrías armar una función con argumentos variaalbes, que reciba todos los caracteres estilo:

char OR (char val, ... );
Título: Re: Disminuir Codigo En Uso De If
Publicado por: JuanK en Lunes 22 de Diciembre de 2003, 15:16
si ,
asi es yo haria esto:
Código: Text
  1.  
  2. char valor='&#092;0';
  3. int val=NULL;
  4. char value='&#092;0';
  5. ...
  6. ...
  7. /*para preguntar si es solo un numero de 0 a 7(octal) en
  8. el caso de que la entrada fuera caracter*/
  9. if(valor&#62;='0' && valor&#60;='7')
  10. {
  11. }
  12. /*si la entrad fuera numerica*/
  13. if(val&#62;=0 && val&#60;=7)
  14. {
  15. }
  16. /*Ahora para saber si una entrada de caracter es mayuscula
  17. o minuscula*/
  18. //mayuscula METODO 1
  19. if(value&#62;='A'  && value&#60;='Z')
  20. {
  21. }
  22. //mayuscula METODO 2
  23. if(value&#62;=57  && value&#60;=90)
  24. {
  25. }
  26. //minuscula METODO 1
  27. if(value&#62;='a'  && value&#60;='z')
  28. {
  29. }
  30. //minuscula METODO 2
  31. if(value&#62;=97  && value&#60;=122)
  32. {
  33. }
  34.  
  35.  

Ahora.. no se que estas haciendo pèro si estas recibiendo por teclado entradas de txto equivalentes a valores en octal o hexa.. usa la funcio strtol strtoi
estas funciones convierten de cadena a long o a int segun sea el caso, alli tu le puedes indicar en que base estas recibiendo el la representacion en cadena para convertirla en número.   :devil:
Título: Re: Disminuir Codigo En Uso De If
Publicado por: © Jonathan © en Lunes 22 de Diciembre de 2003, 15:30
Hola amigos, les agradesco infinitamente su ayuda  :smartass: , ambas respuestas me bienen al pelo, ahora implementare  :comp:  la ayuda que me han brindado y vere si logro lo que deseo. GRACIAS!!! y Saludos!  :hola:
Título: Re: Disminuir Codigo En Uso De If
Publicado por: QliX=D! en Jueves 15 de Enero de 2004, 16:07
PAra el caso de que sean varios valores no continuos, me parece que mejor es uasr un switch...
Y si es solo entre dos valores con una sola instruccion dentro del if de cada lado, lo mejor es usar el operador ternario ?: se usa asi:

condicion?instruccionsiesverdadero:instruccionsiesfalso;

por ejemplo:
Código: Text
  1.  
  2. bool condicion;
  3. .
  4. .
  5. .
  6. //haces algo qeu la setee y dps:
  7.  
  8. cout &#60;&#60; &#34;El valor es: &#34; &#60;&#60; condicion?&#34;Verdadero&#34;:&#34;Falso&#34;;
  9.  
  10.  
slds.