Problema en javascript

Iniciado por Diesan Romero, 11 Febrero 2017, 04:22 AM

0 Miembros y 2 Visitantes están viendo este tema.

Diesan Romero

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 (javascript) [Seleccionar]

var edad = prompt("Coloca tu edad");
if (edad >= 18 && < 21){
document.write("Bienvenido, pero no puedes embriagarte");
}
else if(edad == 18 >= 21){
document.write("Puedes embriagarte, Bienvenido");
}  else {
document.write("you are not welcome")}

engel lex

no sabes usar logica de argumentos...

Código (javascript) [Seleccionar]
edad >= 18 && < 21

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

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 (javascript) [Seleccionar]
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
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.

Diesan Romero

Cita de: engel lex en 11 Febrero 2017, 04:35 AM
no sabes usar logica de argumentos...

Código (javascript) [Seleccionar]
edad >= 18 && < 21

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

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 (javascript) [Seleccionar]
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 (javascript) [Seleccionar]
edad >= 18 && edad < 21 ??  :-[

No entendí

ivancea96

Cita de: Mago Diesan en 11 Febrero 2017, 06:17 AM
Ósea tendría que ser 
Código (javascript) [Seleccionar]
edad >= 18 && edad < 21 ??  :-[

No entendí

Correcto.
Código (javascript) [Seleccionar]
(edad >= 18) && ( ¿_? < 21)

Como en matemáticas.

Diesan Romero

Cita de: ivancea96 en 11 Febrero 2017, 13:32 PM
Correcto.
Código (javascript) [Seleccionar]
(edad >= 18) && ( ¿_? < 21)

Como en matemáticas.

Código (javascript) [Seleccionar]

const usuario = 21;

if(usuario == 18){
  document.write("PUEDES ENTRAR AL BAR PERO NO TOMAR");
}
else if (usuario >= 18) && (usuario >= 21){
  document.write("PUEDES TOMAR")
}

else{
  document.write("NO ERES BIENVENIDO")
}




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

ivancea96

El if necesita paréntesis.
Lo tienes así:
Código (javascript) [Seleccionar]
if (usuario >= 18) && (usuario >= 21)

Y debería estar así:
Código (javascript) [Seleccionar]
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.

Diesan Romero

Cita de: ivancea96 en 12 Febrero 2017, 13:40 PM
El if necesita paréntesis.
Lo tienes así:
Código (javascript) [Seleccionar]
if (usuario >= 18) && (usuario >= 21)

Y debería estar así:
Código (javascript) [Seleccionar]
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