Problema con un IF

  • Autor Autor aberrao
  • Fecha de inicio Fecha de inicio
A

aberrao

Alfa
Social Media
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola conforeros

Estoy empezando con esto del Javascript y me surge un problema.

Necesito hacer un programa que pida al usuario por pantalla un numero entre 1 y 3 y lo compare con otro generado aleatoriamente devolviendo un mensaje por pantalla. El problema es que meta el numero que meta siempre se me sale por el else :fatigue:

A ver si alguien me puede dar una ayuda. Gracias


<script type="text/javascript">

// Creamos una funcion que nos genere un numero aleatorio
var num = function()
{
//Con Math.randon creamos un numero aleatorio y multiplicamos por 3
// el resultado que de se redondea por arriba con Math.ceil
return Math.ceil(Math.random() * 3);
};

// Prompt pide un numero y lo guardamos en la variable
var pantalla = prompt("Introduzca un número");


if (pantalla == num)
{ document.writeln('correcto');
}
else
{ document.writeln('incorrecto, el numero aleatorio es ' + num());
}

</script>
 
Última edición:
Creo que no es necesaria una función, el primer número aleatorio lo puedes hacer así:

Insertar CODE, HTML o PHP:
var num = parseInt(Math.random()*3+1);

El 1 para que no de 0, si quieres que de 0 quitalo.
 
Creo que no es necesaria una función, el primer número aleatorio lo puedes hacer así:

Insertar CODE, HTML o PHP:
var num = parseInt(Math.random()*3+1);

El 1 para que no de 0, si quieres que de 0 quitalo.

necesito utilizar la función porque el ejercicio me lo pide, y en el caso que de cero lo redondeo a 1 con el Mach.ceil

Mi problema es que, aunque meta un 1 por pantalla y el numero aleatorio sea 1 siempre se me sale por el else, jamás me sale el mensaje de "correcto"

if (pantalla == num)
{ document.writeln('correcto');
}
else
{ document.writeln('incorrecto, el numero aleatorio es ' + num());
}

por cierto, ¿Como haces para poner el codigo en los post?
Un saludo y gracias
 
Y como compruebas que el número que se generó aleatorio es el mismo que metes en el prompt...

Mira que es lo que te regresa la variable num... Números

lo que pasa es que cada vez que pones la función se crea un nuevo número.
 
Entiendo que quieres decir que al ejecutar el if vuelvo a llamar nuevamente a la función y ahí radica el problema.
Si fuera así, ¿Como podria sacar por pantalla en contenido de num sin volver a generar un nuevo numero aleatorio?


if (pantalla == num)
{ document.writeln("correcto");
}
else
{ document.writeln("incorrecto, el numero aleatorio es " + num());
}
 
No toco mucho javascript pero parece que la variable num es una función (la declaras como var num = function()....) y si la usas sin num() no la estas ejecutando, por lo que la comparacion pantalla == num no está comparando un número con otro, está comparando un número con una función.

Yo haria algo como:
Insertar CODE, HTML o PHP:
<script type="text/javascript">

// Creamos una funcion que nos genere un numero aleatorio
function num()
{
//Con Math.randon creamos un numero aleatorio y multiplicamos por 3
// el resultado que de se redondea por arriba con Math.ceil
return Math.ceil(Math.random() * 3);
};

// Prompt pide un numero y lo guardamos en la variable
var pantalla = prompt("Introduzca un número");

var numero = num();
if (pantalla == numero)
{ document.writeln('correcto');
}
else
{ document.writeln('incorrecto, el numero aleatorio es ' + numero);
}

</script>
 
Hola conforeros

Estoy empezando con esto del Javascript y me surge un problema.

Necesito hacer un programa que pida al usuario por pantalla un numero entre 1 y 3 y lo compare con otro generado aleatoriamente devolviendo un mensaje por pantalla. El problema es que meta el numero que meta siempre se me sale por el else :fatigue:

A ver si alguien me puede dar una ayuda. Gracias


<script type="text/javascript">

// Creamos una funcion que nos genere un numero aleatorio
var num = function()
{
//Con Math.randon creamos un numero aleatorio y multiplicamos por 3
// el resultado que de se redondea por arriba con Math.ceil
return Math.ceil(Math.random() * 3);
};

// Prompt pide un numero y lo guardamos en la variable
var pantalla = prompt("Introduzca un número");


if (pantalla == num)
{ document.writeln('correcto');
}
else
{ document.writeln('incorrecto, el numero aleatorio es ' + num());
}

</script>
Y asi puedevque funcione

var num = function()
{
//Con Math.randon creamos un numero aleatorio y multiplicamos por 3
// el resultado que de se redondea por arriba con Math.ceil
return parseInt(Math.random() * 3 + 1);
};
var numfinal = num();

// Prompt pide un numero y lo guardamos en la variable
var pantalla = prompt("Introduzca un número");


if (pantalla == numfinal)
{ alert('correcto');
}
else
{ alert('incorrecto, el numero aleatorio es ' + numfinal);
}
 
Atrás
Arriba