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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con algoritmo secuencial usando booleanos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con algoritmo secuencial usando booleanos  (Leído 2,449 veces)
DeIMachine

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Duda con algoritmo secuencial usando booleanos
« en: 20 Noviembre 2015, 14:29 pm »

Código
  1.  
  2. int i = 0;
  3.        int n = 2;
  4.        int p=3;
  5.        bool encontrado = false;
  6. while (!encontrado && i < n) {
  7. if (t[i]) == p) {
  8. encontrado = true;
  9. }
  10. else {
  11. i++;
  12. }
Mi duda esta en los booleanos, el codigo esta bien lo que no entiendo es lo siguiente: Si tu declaras el booleano encontrado como falso, usando la exclamacion lo estas negando y estas diciendo que mientras sea true que se ejecute el bucle, pero cuando encontrado sea cierto va a pararse, el while no tendria que ser encontrado sin negarlo??


« Última modificación: 21 Noviembre 2015, 01:14 am por DeIMachine » En línea

La tradición es la mortaja de la sabiduría.
0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Duda con algoritmo secuencial usando booleanos
« Respuesta #1 en: 20 Noviembre 2015, 17:00 pm »

el !encontrado está diciendole a while que se ejecute si encontrado == false  cuando encontrado == true el bucle termina.


En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Duda con algoritmo secuencial usando booleanos
« Respuesta #2 en: 20 Noviembre 2015, 22:03 pm »

Cuando haces:

Código
  1. if(!encontrado){...}

ó

Código
  1. while(!encontrado){...}

Estás diciendo que si/mientras la variable encontrado sea falsa (false) ejecutar el bloque de código dentro del if/while.

Si lo declaras:

Código
  1. bool encontrado = false;

La condición del while:


Código
  1. while(!encontrado){...}

Se va a cumplir pues encontrado es false
En línea

DeIMachine

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Duda con algoritmo secuencial usando booleanos
« Respuesta #3 en: 21 Noviembre 2015, 00:16 am »

Ahí esta lo que no entiendo si tu declaras la variable booleana bool encontrado = false
al utilizar en el bucle while !encontrado no estas diciendo que mientras bool sea verdadera se ejecute el bucle?? Gracias de antemano
En línea

La tradición es la mortaja de la sabiduría.
0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Duda con algoritmo secuencial usando booleanos
« Respuesta #4 en: 21 Noviembre 2015, 00:30 am »

no estas diciendo que mientras bool sea verdadera se ejecute el bucle?? Gracias de antemano

No, es mientras encontrado sea falso, si el "!" no estuviera allí entonces si sería mientras encontrado sea verdadero. El while ejecuta código siempre y cuando el valor que esté dentro de los paréntesis sea verdadero, pero el "!" niega todo, es decir, si encontrado es falso entonces lo vuelve verdadero y si es verdadero lo vuelve falso.

Código
  1.   while( true ){
  2.       //el código de aquí dentro se ejecutará porque lo que está entre los parentesis del while es "true"
  3.    }
  4.  
  5.   while( !true ){
  6.       //el código no se ejecuta porque al negar a true lo que está dentro de los parentesis es falso.
  7.    }
  8.  

Así creo que se entiende mejor:

Código
  1.   !true es lo mismo que false
  2.  !false es lo mismo que true
  3.  
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
DeIMachine

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Duda con algoritmo secuencial usando booleanos
« Respuesta #5 en: 21 Noviembre 2015, 01:19 am »

La cosa se resume en que no entiendo porque !entendido=false si al empezar he puesto bool encontrado=false.
« Última modificación: 21 Noviembre 2015, 01:26 am por DeIMachine » En línea

La tradición es la mortaja de la sabiduría.
DeIMachine

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Duda con algoritmo secuencial usando booleanos
« Respuesta #6 en: 21 Noviembre 2015, 01:23 am »

La cosa se resume en que no entiendo porque !entendido=false si al empezar he puesto bool encontrado=false.
No importa el valor que le de antes a bool encontrado??
« Última modificación: 21 Noviembre 2015, 01:28 am por DeIMachine » En línea

La tradición es la mortaja de la sabiduría.
0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Duda con algoritmo secuencial usando booleanos
« Respuesta #7 en: 21 Noviembre 2015, 01:29 am »

si encontrado = false entonces !encontrado = true, así de simple

No importa el valor que le de antes a bool encontrado??

Si importa, al crear la variable encontrado ésta es false, luego !encontrado = true, pero encontrado sigue siendo false, no es que el "!" cambie el valor de encontrado, lo que cambia es la expresión. creo que por eso te hice confudir.
« Última modificación: 21 Noviembre 2015, 01:37 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
DeIMachine

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Duda con algoritmo secuencial usando booleanos
« Respuesta #8 en: 21 Noviembre 2015, 10:53 am »

Lo siento por ser tan pesado pero sigo sin entenderlo, declaras bool encontrado=false luego comienza el bucle while que dice que mientras sea !encontrado se ejecute, el bucle se ejecuta para cuando bool=false pero !encontrado en ese caso no le cambia el valor no se por que.
Veo que while(!encontrado) es lo mismo que while(encontrado==false)
pero no se por qué en este caso no se coge el contrario. Saludos y gracias.
« Última modificación: 21 Noviembre 2015, 12:47 pm por DeIMachine » En línea

La tradición es la mortaja de la sabiduría.
DeIMachine

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Duda con algoritmo secuencial usando booleanos
« Respuesta #9 en: 21 Noviembre 2015, 12:58 pm »

Vale ya lo tengo mas claro, muchas gracias while(!encontrado) se inicializa como true entonces cuando encontrado=true, !encontrado es false y el bucle se para, muchas gracias!!
En línea

La tradición es la mortaja de la sabiduría.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Python - Duda Algoritmo
Scripting
h0oke 7 5,320 Último mensaje 30 Marzo 2010, 03:12 am
por h0oke
Duda Algoritmo de Ordenamiento
Programación General
kernel19 4 3,668 Último mensaje 27 Diciembre 2010, 16:54 pm
por BgCRaCK
duda con algoritmo
Programación General
z_ane_666 1 2,959 Último mensaje 5 Mayo 2011, 23:40 pm
por Valkyr
Un vector de booleanos se puede convertir en un integer y viceversa?
Programación C/C++
Bròquil 6 4,235 Último mensaje 7 Diciembre 2013, 01:46 am
por rir3760
Pregunta sobre condicionales y booleanos.
Programación C/C++
DeIMachine 7 2,457 Último mensaje 8 Noviembre 2015, 23:40 pm
por DeIMachine
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines