Reducir if (Solucionado)

Iniciado por nolasco281, 3 Junio 2014, 19:03 PM

0 Miembros y 2 Visitantes están viendo este tema.

nolasco281

Hola como estan.

quiero saber si hay alguna forma de reducir este codigo ya que esto me parace un poco exagerado estuve pensado como hacerlo con while o con un for pero el problema es que cuando se preciona soble el boton esto quivale a un click y click va aumentando de uno en uno.

osea cuando la variable click es igual a uno se habilita un label que esta oculto y asi susesivamente.

pero me parecen demasiados if y si click llega a 100 o 1000 se tendran que crear tantos if como clicks haya echo el usuario

Código (cpp) [Seleccionar]

colaOb.insert(click);
       
       if(click == 1)
       {
           //Hace visible un label
       }
       else if (click == 2)
       {
           //Hace visible un label
           
       }
       else if (click == 3)
       {
           //Hace visible un label
       }
       else if (click == 4)
       {
          //Hace visible un label
       }
       else if (click == 5)
       {
          //Hace visible un label
       }
       else if (click == 6)
       {
           //Hace visible un label
       }
       
       //Asi sique trece veces mas

       cout << colaOb; //Verifica que en cosola el insertar en cola vaya bien


Mil gracias saludos
Lo que se puede imaginar... se puede programar.

Eternal Idol

Si todos esos valores deben hacer lo mismo y se encuentran en un rango consecutivo hace un if cuya comprobacion sea ( (click > X) && (click < X) ); obviamente X debe ser reemplazado por los limites del rango.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

engel lex

puedes usar switch
Código (cpp) [Seleccionar]

switch variable{
    case 1:
        //algo
        break;
    case 2:
        //algo
        break;
    default:
        //si no cumple ninguna de las condiciones anteriores
        break;
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivancea96

Haces visible un label. Quizás metiendo esos labels en un array, y accediendo a ellos mediante labels[click] te valga.

nolasco281

#4
hola  contestando primero a Eternal Idol creo que entedi la idea el problema es que son label distintos los que se deben de activar segun valla incrementado click.


Código (cpp) [Seleccionar]
if ((click >0) && (click < 30))
       {
          lblCliente13 //Se hace visible este label Cuando Click es 1
           lblCliente14 //Se hace visible este label Cuando Click es 2
           lblCliente15 //Se hace visible este label Cuando Click es 3
           lblCliente16 //Se hace visible este label Cuando Click es 4
           lblCliente17 //Se hace visible este label Cuando Click es 5
           lblCliente18 //Se hace visible este label Cuando Click es 6
           lblCliente19 //Se hace visible este label Cuando Click es 7
       }

Contestando a engel lex en caso de que use swicth deberia crear tantos case como clicks solo que estarian contenidos dentro de un solo switch
seria casi como usar if.

intentare lo que indica ivancea96 gracias a todos por comentar
ahora que lo pienso

Cita de: ivancea96 en  3 Junio 2014, 19:30 PM
Haces visible un label. Quizás metiendo esos labels en un array, y accediendo a ellos mediante labels[click] te valga.

pero como sabria que label es el que se va a volver visible por medio del click que reciva el array?
lo intentare ahora

Gracias por contestar a todos. Saludos
Lo que se puede imaginar... se puede programar.

ivancea96

Cita de: nolasco281 en  3 Junio 2014, 20:11 PM
Código (cpp) [Seleccionar]
if ((click >0) && (click < 30))
        {
           lblCliente13 //Se hace visible este label Cuando Click es 1
            lblCliente14 //Se hace visible este label Cuando Click es 2
            lblCliente15 //Se hace visible este label Cuando Click es 3
            lblCliente16 //Se hace visible este label Cuando Click es 4
            lblCliente17 //Se hace visible este label Cuando Click es 5
            lblCliente18 //Se hace visible este label Cuando Click es 6
            lblCliente19 //Se hace visible este label Cuando Click es 7
        }


Cogiendo eso de ejemplo:

labels[click+12]

Como lvlCliente13 se hace visible cuando Click es 1, pues 12+1 da 13.

Antes claro, tendrías que meter las labels en el array o vector o lo que quieras.

No se si entendí muy bien, así que ya dirás.

eferion

Y no sería más facil mapear los label usando un vector??

Código (cpp) [Seleccionar]

std::vector< Label* > labels;
labels.push_back( label1 );
labels.push_back( label2 );

// ...

if ( ( click > 0 ) && ( click <= labels.size( ) ) )
  labels[ click ]->hide( );

vangodp

#7
Código (cpp) [Seleccionar]

   int x = 1;
   int click = 0;
   colaOb.insert(click);
   click = click -1;        // si el problema es que al hacer click click es igual a 2 clicks le quitas uno XD
   while ( clik == x ){
       colaOb.insert(click);
       click = click - 1;   // si el problema es que al hacer click click es igual a 2 clicks le quitas uno XD
       mostrar ( label, x);
       cout << colaOb; //Verifica que en cosola el insertar en cola vaya bien        
       x++;
       if ( click == 30)
           0 = 0;
   }


el propio click puede ser indice si le quitas un click ni hace falta la x XD
si un click es igual a 2 le quitas uno en seguida antes de hacer comprobaciones XD  :laugh:
Es solo una idea XD
Es un click click - 1click   :¬¬

nolasco281

Hola queria comentar que despues de estar  tratando me funciono

hice un poco de lo que comenta ivancea96 y eferion cree una instancia de los labels despues pase a todos los labes que tenia creados a un vector como comenta eferion y luego los llame de la forma que comenta ivancea96


Gracias a todos un poco de ayuda y pensar de que forma te puede servir es genial.

Gracias a todos saludos y muchas gracias por la ayuda.
Lo que se puede imaginar... se puede programar.