Foro de elhacker.net

Programación => Java => Mensaje iniciado por: ryan parker en 2 Junio 2013, 06:45 am



Título: Dos condiciones en estructura do-while
Publicado por: ryan parker en 2 Junio 2013, 06:45 am
Esta pregunta es bastante novato, pero la verdad estoy llevando tiempo viendo por que no funciona.
Código
  1. do{
  2.   numero = ingresa.nextInt();
  3. }while(numero == 0 && numero > 100000)

La idea es ingresar un numero que este entre: 1<= n <100.
Y que sume naturalmente segun el numero ingresado.

Entrada:
2
5

Salida:
3
15

Pero si ingresas 0, es resultado es: 0.
Si ingresas 101, sale el resultado.
Cosa que debe  de seguir pidiendome leer numero.

Por ejemplo si hago asi:
Código
  1. do{
  2. do{
  3. numero = ingreso.nextInt();
  4. }while(numero == 0);
  5. }while(numero > 10000);

Hace correctamente, pero mi pregunta es por que no puedo hacerlo solo en un while?

Saludos.


Título: Re: Dos condiciones en estructura do-while
Publicado por: Kenkox en 2 Junio 2013, 07:07 am
No funciona porque la condicion de numero == 0 && numero >100 nunca va a ser verdadera y por tanto solo entra una vez .... ¿Porque?... porque supongamos numero == 0 .... la primera condicion es verdadera, pero la segunda es falsa... por lo tanto  TRUE && FALSE = FALSE

Ahora supongamos numero > 100 .... la primera condicion es falsa, y la segunda verdadera... por lo tanto FALSE && TRUE = false... por lo tanto solo entrara una vez y parara el ciclo.....

Si quieres que solo se ingrese un numero  1 <= n < 100

entonces tu codigo tendria que ser

while( numero> 0 && numero < 100 ){
balbalñaba
}

Supongamos que numero es igual a 1

1>0 && 1 < 100 .... TRUE && TRUE = TRUE
 
ahora n = 99
99> 0 && 99 < 100 TRUE && TRUE = TRUE

ahora n = 100

100 > 0 && 100 < 100 TRUE && FALSE = FALSE

por lo tanto cume que  1<=n<100

No sé bien como este tu codigo, pero creo que deberias de usar un while en lugar de un do while..... tienes que notar que el while primero evalua y despues realiza... el do while, primero hace y despues evalua.. hay una gran diferencia...

Suerte (y)


Título: Re: Dos condiciones en estructura do-while
Publicado por: ryan parker en 3 Junio 2013, 19:45 pm
Gracias por responder amigo, estado probando, lamentablemente seguia dando saltos inesperados,  yasi que estuve  razonando la logica que acabas de publicar. Recordando algo de logica proposicional, lo que mejor se ajustaba a este enunciado fue la logica proposicional de ' O inclusiva '.

Código
  1. int numero = entrada.nextInt();
  2.   while(numero <= 0 || numero > 100){
  3.      numero = entrada.nextInt();
  4. }

Funciona adecuadamente.  :laugh:
Pero mis jueces dicen que esto da lugar a un error de en tiempo de ejecucion (runtime error)   :-(

Cosa que sigo revisando.
Saludos


Título: Re: Dos condiciones en estructura do-while
Publicado por: YairMon en 5 Junio 2013, 06:32 am
Mientras que 1 <= n < 100

Código
  1. int numero = entrada.nextInt();
  2. while(numero > 0 && numero < 100){
  3.     numero = entrada.nextInt();
  4. }