Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Ali Baba en 11 Febrero 2017, 04:22 am



Título: Problema en javascript
Publicado por: Ali Baba en 11 Febrero 2017, 04:22 am
Tengo un problema, resulta que tengo que hacer un programa en js que consiste en lo siguiente, si el usuario es menor de 18 entonces no sera bienvenido, si el usuario es mayor de 18 o tiene 18 esbienvenido pero no puede tomar en el bar, si el usuario tiene mas de 21 entonces si puede tomar. mi codigo es este y sospecho que es un error de sintaxis o de logica en cuanto a la hora de comparar la edad:


Código
  1. var edad = prompt("Coloca tu edad");
  2. if (edad >= 18 && < 21){
  3. document.write("Bienvenido, pero no puedes embriagarte");
  4. }
  5. else if(edad == 18 >= 21){
  6. document.write("Puedes embriagarte, Bienvenido");
  7. }  else {
  8. document.write("you are not welcome")}
  9.  


Título: Re: Problema en javascript
Publicado por: engel lex en 11 Febrero 2017, 04:35 am
no sabes usar logica de argumentos...

Código
  1. edad >= 18 && < 21


">=" es un operador al igual que "<"... ellos toman ambas partes las comparan y retornan cierto o falso, podrías velos como

Código:
function gte(a,b){
  return a >= b;
}

function lt(a,b){
  return a < b;
}


y en el codigo susituirlo por esa función quedando

Código
  1. if (gte(edad, 18) && lt(, 21)){

quedando algo incoherente no? a lt le falta el primer parametro, 21 no se compara con nadie

ni hablemos de la linea 5


Título: Re: Problema en javascript
Publicado por: Ali Baba en 11 Febrero 2017, 06:17 am
no sabes usar logica de argumentos...

Código
  1. edad >= 18 && < 21


">=" es un operador al igual que "<"... ellos toman ambas partes las comparan y retornan cierto o falso, podrías velos como

Código:
function gte(a,b){
  return a >= b;
}

function lt(a,b){
  return a < b;
}


y en el codigo susituirlo por esa función quedando

Código
  1. if (gte(edad, 18) && lt(, 21)){

quedando algo incoherente no? a lt le falta el primer parametro, 21 no se compara con nadie

ni hablemos de la linea 5


Ósea tendría que ser 
Código
  1. edad >= 18 && edad < 21
??  :-[

No entendí


Título: Re: Problema en javascript
Publicado por: ivancea96 en 11 Febrero 2017, 13:32 pm
Ósea tendría que ser 
Código
  1. edad >= 18 && edad < 21
??  :-[

No entendí

Correcto.
Código
  1. (edad >= 18) && ( ¿_? < 21)

Como en matemáticas.


Título: Re: Problema en javascript
Publicado por: Ali Baba en 12 Febrero 2017, 06:33 am
Correcto.
Código
  1. (edad >= 18) && ( ¿_? < 21)

Como en matemáticas.

Código
  1. const usuario = 21;
  2.  
  3. if(usuario == 18){
  4.  document.write("PUEDES ENTRAR AL BAR PERO NO TOMAR");
  5. }
  6. else if (usuario >= 18) && (usuario >= 21){
  7.  document.write("PUEDES TOMAR")
  8. }
  9.  
  10. else{
  11.  document.write("NO ERES BIENVENIDO")
  12. }
  13.  
  14.  


Codepen me muestra un error de sintaxis y no lo entiend bien, tiene que ver con el operador AND


Título: Re: Problema en javascript
Publicado por: ivancea96 en 12 Febrero 2017, 13:40 pm
El if necesita paréntesis.
Lo tienes así:
Código
  1. if (usuario >= 18) && (usuario >= 21)

Y debería estar así:
Código
  1. if( (usuario >= 18) && (usuario >= 21) )

Los paréntesis de dentro, en cualquier caso, no son necesarios (puedes ponerlos si quieres por legibilidad, por supuesto. Pero vamos, que los puse para que vieras cómo se desarrollan esas operaciones.


Título: Re: Problema en javascript
Publicado por: Ali Baba en 12 Febrero 2017, 16:36 pm
El if necesita paréntesis.
Lo tienes así:
Código
  1. if (usuario >= 18) && (usuario >= 21)

Y debería estar así:
Código
  1. if( (usuario >= 18) && (usuario >= 21) )

Los paréntesis de dentro, en cualquier caso, no son necesarios (puedes ponerlos si quieres por legibilidad, por supuesto. Pero vamos, que los puse para que vieras cómo se desarrollan esas operaciones.


Muchas gracias, ahora entiendo más