elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Reducir if (Solucionado)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Reducir if (Solucionado)  (Leído 3,668 veces)
nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Reducir if (Solucionado)
« en: 3 Junio 2014, 19:03 pm »

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
  1. colaOb.insert(click);
  2.  
  3.        if(click == 1)
  4.        {
  5.            //Hace visible un label
  6.        }
  7.        else if (click == 2)
  8.        {
  9.            //Hace visible un label
  10.  
  11.        }
  12.        else if (click == 3)
  13.        {
  14.            //Hace visible un label
  15.        }
  16.        else if (click == 4)
  17.        {
  18.           //Hace visible un label
  19.        }
  20.        else if (click == 5)
  21.        {
  22.           //Hace visible un label
  23.        }
  24.        else if (click == 6)
  25.        {
  26.            //Hace visible un label
  27.        }
  28.  
  29.        //Asi sique trece veces mas
  30.  
  31.        cout << colaOb; //Verifica que en cosola el insertar en cola vaya bien

Mil gracias saludos


« Última modificación: 5 Junio 2014, 00:19 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Reducir if
« Respuesta #1 en: 3 Junio 2014, 19:12 pm »

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.


En línea

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Reducir if
« Respuesta #2 en: 3 Junio 2014, 19:16 pm »

puedes usar switch
Código
  1. switch variable{
  2.    case 1:
  3.        //algo
  4.        break;
  5.    case 2:
  6.        //algo
  7.        break;
  8.    default:
  9.        //si no cumple ninguna de las condiciones anteriores
  10.        break;
  11. }
En línea

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


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Reducir if
« Respuesta #3 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.
En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Reducir if
« Respuesta #4 en: 3 Junio 2014, 20:11 pm »

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
  1. if ((click >0) && (click < 30))
  2.        {
  3.           lblCliente13 //Se hace visible este label Cuando Click es 1
  4.            lblCliente14 //Se hace visible este label Cuando Click es 2
  5.            lblCliente15 //Se hace visible este label Cuando Click es 3
  6.            lblCliente16 //Se hace visible este label Cuando Click es 4
  7.            lblCliente17 //Se hace visible este label Cuando Click es 5
  8.            lblCliente18 //Se hace visible este label Cuando Click es 6
  9.            lblCliente19 //Se hace visible este label Cuando Click es 7
  10.        }
  11.  
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

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
« Última modificación: 3 Junio 2014, 20:31 pm por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Reducir if
« Respuesta #5 en: 3 Junio 2014, 20:47 pm »

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

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.
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Reducir if
« Respuesta #6 en: 4 Junio 2014, 08:24 am »

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

Código
  1. std::vector< Label* > labels;
  2. labels.push_back( label1 );
  3. labels.push_back( label2 );
  4.  
  5. // ...
  6.  
  7. if ( ( click > 0 ) && ( click <= labels.size( ) ) )
  8.  labels[ click ]->hide( );
  9.  
En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Reducir if
« Respuesta #7 en: 4 Junio 2014, 13:21 pm »

Código
  1.    int x = 1;
  2.    int click = 0;
  3.    colaOb.insert(click);
  4.    click = click -1;        // si el problema es que al hacer click click es igual a 2 clicks le quitas uno XD
  5.    while ( clik == x ){
  6.        colaOb.insert(click);
  7.        click = click - 1;   // si el problema es que al hacer click click es igual a 2 clicks le quitas uno XD
  8.        mostrar ( label, x);
  9.        cout << colaOb; //Verifica que en cosola el insertar en cola vaya bien        
  10.        x++;
  11.        if ( click == 30)
  12.            0 = 0;
  13.    }
  14.  

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   :¬¬
« Última modificación: 4 Junio 2014, 13:28 pm por vangodp » En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Reducir if
« Respuesta #8 en: 5 Junio 2014, 00:18 am »

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.
En línea

Lo que se puede imaginar... se puede programar.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
reducir bitrate mp3 o ogg??
Multimedia
Cobac 9 3,508 Último mensaje 24 Octubre 2004, 06:16 am
por Cobac
Reducir un MPG
Multimedia
S@r@z@ 1 1,877 Último mensaje 6 Marzo 2006, 07:50 am
por Sourraund
Reducir 1080p
Multimedia
WildFroVII 0 1,888 Último mensaje 5 Febrero 2008, 12:26 pm
por WildFroVII
Reducir peso del GIF
Diseño Gráfico
dimitrix 7 13,637 Último mensaje 30 Noviembre 2011, 18:57 pm
por _Enko
VC++ reducir tamaño
Programación C/C++
Geek7 1 2,135 Último mensaje 13 Diciembre 2012, 19:09 pm
por x64core
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines