Autor
|
Tema: Duda con algoritmo secuencial usando booleanos (Leído 2,492 veces)
|
DeIMachine
Desconectado
Mensajes: 41
|
int i = 0; int n = 2; int p=3; bool encontrado = false; while (!encontrado && i < n) { if (t[i]) == p) { encontrado = true; } else { i++; }
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
Mensajes: 400
|
el !encontrado está diciendole a while que se ejecute si encontrado == false cuando encontrado == true el bucle termina.
|
|
|
En línea
|
int getRandomNumber(){ return 4; //chosen by fair dice roll //guaranteed to be random }
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
Cuando haces: if(!encontrado){...}
ó 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: bool encontrado = false;
La condición del while: while(!encontrado){...}
Se va a cumplir pues encontrado es false
|
|
|
En línea
|
|
|
|
DeIMachine
Desconectado
Mensajes: 41
|
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
Mensajes: 400
|
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. while( true ){ //el código de aquí dentro se ejecutará porque lo que está entre los parentesis del while es "true" } while( !true ){ //el código no se ejecuta porque al negar a true lo que está dentro de los parentesis es falso. }
Así creo que se entiende mejor: !true es lo mismo que false !false es lo mismo que true
|
|
|
En línea
|
int getRandomNumber(){ return 4; //chosen by fair dice roll //guaranteed to be random }
|
|
|
DeIMachine
Desconectado
Mensajes: 41
|
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
Mensajes: 41
|
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
Mensajes: 400
|
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
|
int getRandomNumber(){ return 4; //chosen by fair dice roll //guaranteed to be random }
|
|
|
DeIMachine
Desconectado
Mensajes: 41
|
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
Mensajes: 41
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Python - Duda Algoritmo
Scripting
|
h0oke
|
7
|
5,386
|
30 Marzo 2010, 03:12 am
por h0oke
|
|
|
Duda Algoritmo de Ordenamiento
Programación General
|
kernel19
|
4
|
3,700
|
27 Diciembre 2010, 16:54 pm
por BgCRaCK
|
|
|
duda con algoritmo
Programación General
|
z_ane_666
|
1
|
2,987
|
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,286
|
7 Diciembre 2013, 01:46 am
por rir3760
|
|
|
Pregunta sobre condicionales y booleanos.
Programación C/C++
|
DeIMachine
|
7
|
2,503
|
8 Noviembre 2015, 23:40 pm
por DeIMachine
|
|