Programación General > C/C++

 Disminuir Codigo En Uso De If

(1/1)

© Jonathan ©:
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 --- if ((H == '1') || (H == '2') || (H == '3') || (H == '4') || (H == '5') || (H == '6') ||          (H == '7') || (H == '8')) 
   Como puedo simplificar esto para que sea por ejemplo:

--- Código: Text ---  if (H == octal) 
   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:

Martin Candurra:
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, ... );

JuanK:
si ,
asi es yo haria esto:

--- Código: Text --- char valor='&#092;0';int val=NULL;char value='&#092;0';....../*para preguntar si es solo un numero de 0 a 7(octal) enel caso de que la entrada fuera caracter*/if(valor&#62;='0' && valor&#60;='7'){}/*si la entrad fuera numerica*/if(val&#62;=0 && val&#60;=7){}/*Ahora para saber si una entrada de caracter es mayusculao minuscula*///mayuscula METODO 1if(value&#62;='A'  && value&#60;='Z'){}//mayuscula METODO 2if(value&#62;=57  && value&#60;=90){}//minuscula METODO 1if(value&#62;='a'  && value&#60;='z'){}//minuscula METODO 2if(value&#62;=97  && value&#60;=122){}  
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:

© Jonathan ©:
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:

QliX=D!:
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 --- bool condicion;...//haces algo qeu la setee y dps: cout &#60;&#60; &#34;El valor es: &#34; &#60;&#60; condicion?&#34;Verdadero&#34;:&#34;Falso&#34;;  slds.

Navegación

[0] Índice de Mensajes

Ir a la versión completa