Autor Tema: JavaScript crear números aleatorios en rango usar objeto Math número pi CU01165E  (Leído 5574 veces)

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Entrega ejercicios de la unidad CU01165E del curso JavaScript desde cero:

Citar
EJERCICIO 1

Crea un script que genere un número aleatorio entre 1 y 100. A continuación debe pedir al usuario que adivine el número. Si el usuario responde un número menor al número aleatorio, debe mostrarse un mensaje “El número es mayor. Inténtelo de nuevo” y dar opción a responder de nuevo. Si el usuario responde un número mayor debe mostrarse un mensaje “El número es menor. Inténtelo de nuevo”. Si el usuario acierta debe mostrarse “Enhorabuena. Ha acertado”. El programa debe terminar si el usuario acierta o si se superan los 30 intentos sin acertar. En caso de superarse los 30 intentos debe mostrarse el mensaje “Ha superado 30 intentos. El programa termina”.


Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<script>
window.onload = function (){
    numeroAleatorio();
}   

function numeroAleatorio(){

    var numeroAleatorio = Math.floor((Math.random()*(101-1))+1);
    alert (numeroAleatorio);
    var contador = 1;
    var numeroUsuario = prompt ("Introduzca un numero : ");
   while (numeroAleatorio!=numeroUsuario){
    if (numeroUsuario<numeroAleatorio){
        numeroUsuario= prompt ("El numero es mayor.Intentelo de nuevo:");
    }
    else {
        numeroUsuario = prompt ("El numero es menor. Intentelo de nuevo:");
    }
   }
    contador++;
    if(contador>30){
         alert ("Ha superado 30 intentos.El programa termina");
    }else {
       
        alert ("Enhorabuena");
    }
   

}
   

</script>
<body>
   
</body>
</html>


Citar
EJERCICIO 2

Crea un script que pida al usuario el dato de radio en metros de la base de un cilindro y el dato de altura del cilindro. Utilizando la propiedad Math.PI debe realizarse el cálculo para determinar el área de la base del cilindro y el volumen del cilindro y mostrar estos resultados. Consulta en internet si no recuerdas las fórmulas a aplicar. .
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<script>
window.onload = function (){
    var radio = prompt ("Introduzca radio del cilindro");
    var altura = prompt ("Introduzca altura de un cilindro");
    var volumen = calcularVolumen(radio,altura);
    var area = calcularArea(radio);
    alert ("El resutado es:\nVolumen:"+volumen+"\nArea:"+area);
}

function calcularVolumen(radio,altura){
    var volumen = Math.PI*Math.pow(radio,2)*altura;
    return volumen;
}
   
function calcularArea(radio){
    var area = Math.PI*Math.pow(radio,2);
    return area;
}
    </script>
<body>
   
</body>
</html>


Citar
EJERCICIO 3

Crea un script que dé lugar a lo siguiente:

a) En un div con id="volador” debes tener una palabra como <<JavaScript>>.

b) Utilizando las funciones trigonométricas, las propiedades de posicionamiento CSS y funciones para control de animaciones/tiempo debes dar lugar a que dicha palabra se desplace desde la izquierda hasta la derecha de la pantalla siguiendo un movimiento sinusoidal (es decir, subiendo y bajando suavemente describiendo ondas).
Para las personas que hagan este ejercicio que tengan en cuenta la variación tan grande que hay entre el rango de valores de x.
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
    #volador{
        display:inline-block;
        background-color:crimson;
        border:solid thin black;
        border-radius:12px;
        position:absolute;
        top: 300px;
        padding:10px;
        width: 65px;
    }   
</style>
<script>
    var globalID;
    var sentido = true;
    var coordenadaX = 0;
    var coordenadaY = 300;
   
window.onload = function(){
    anchoVentana();
}
   
    function anchoVentana(){
        var ancho = window.innerWidth;
        // Condicion para rebote pared
        if (coordenadaX == (ancho - 95 )){
              sentido = false;
         }
        if (coordenadaX == 0){
            sentido = true;
        }
       
        // Condicion para sentido volador
        if (sentido == true){
            coordenadaX++;
        }else{
            coordenadaX--;
        }
       
        // Formula para sentido
        coordenadaY = coordenadaY+(Math.sin(coordenadaX*0.03));
       
        // Uso del DOM
        var volador = document.getElementById("volador");
        volador.style.top=coordenadaY+'px';;
        volador.style.left=coordenadaX+'px';
     
        // Llamada recursiva requestanimationFrame
        globalID=requestAnimationFrame(anchoVentana);
   
       
    }
     
   
    </script>
</head>
« Última modificación: 29 de Febrero 2016, 13:52 por César Krall »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU01165E. Math
« Respuesta #1 en: 27 de Febrero 2016, 16:09 »
Hola bermartinv.

El ejercicio 1 está incompleto, si se superan los 30 intentos no hace nada.

El ejercico 2, todo OK.

El ejercicio 3, falta parte del código.

saludos.

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Re:CU01165E. Math
« Respuesta #2 en: 27 de Febrero 2016, 17:35 »
Hola pedro,, si es verdad que el ejercicio1 no había hecho las comprobaciones pertinentes.
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<script>
window.onload = function (){
    numeroAleatorio();
}   

function numeroAleatorio(){

    var numeroAleatorio = Math.floor((Math.random()*(101-1))+1);
    alert (numeroAleatorio);
    var contador = 1;
   
    while (contador <= 30 ){
       var numeroUsuario = prompt ("Introduzca un numero : ");
        if (numeroUsuario<numeroAleatorio){
        alert ("El numero es mayor");
        }else if(numeroUsuario>numeroAleatorio){   
        alert ("El numero es menor");
        }
        else{
           alert ("Enhorabuena");
            break;
        }
    contador++;
       
    }   
     if (contador > 30){
        alert ("Ha utilizado las 30 posibilidades para acertar el numero");
       
    }
   

   
    }
</script>
<body>
   
</body>
</html>
Respecto del ejercicio 3, pensaba que con la función del seno valdría. He añadido la del coseno.
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
    #volador1{
        display:inline-block;
        background-color:crimson;
        border:solid thin black;
        border-radius:12px;
        position:absolute;
        top: 300px;
        padding:10px;
        width: 65px;
    }   
    #volador2{
        display:inline-block;
        background-color:crimson;
        border:solid thin black;
        border-radius:12px;
        position:absolute;
        top: 400px;
        padding:10px;
        width: 65px;
    }   
   
</style>
<script>
    var globalID;
    var sentido = true;
    var coordenadaX = 0;
    var coordenadaY1 = 300;
    var coordenadaY2 = 300;
   
window.onload = function(){
    anchoVentana();
}
   
    function anchoVentana(){
        var ancho = window.innerWidth;
        // Condicion para rebote pared
        if (coordenadaX == (ancho - 95 )){
              sentido = false;
         }
        if (coordenadaX == 0){
            sentido = true;
        }
       
        // Condicion para sentido volador
        if (sentido == true){
            coordenadaX++;
        }else{
            coordenadaX--;
        }
       
        // Formula para sentido
        coordenadaY1 = coordenadaY1+(Math.sin(coordenadaX*0.03));
        coordenadaY2 = coordenadaY2+(Math.cos(coordenadaX*0.03));
       
        // Uso del DOM
        var volador1 = document.getElementById("volador1");
        //var volador2 = document.getElementById("volador2");
       
        volador1.style.top=coordenadaY1+'px';
        volador1.style.left=coordenadaX+'px';
        volador2.style.top=coordenadaY2+'px';
        volador2.style.left=coordenadaX+'px';
     
        // Llamada recursiva requestanimationFrame
        globalID=requestAnimationFrame(anchoVentana);
   
       
    }
     
   
    </script>
</head>

<body >
   <div id="volador1">Seno</div>
   <div id="volador2">Coseno</div>
 
   
</body>
</html>

Por cierto, me he dado cuenta que cuando vas hacer slgo con algun id del DOM, no hace falta declararlo primeo, te puedes referir directamente a él.
En vez de :
Código: [Seleccionar]
var nodoID= document.getElementByID("elemento";
nodoID.style.backgrounColor='red';
Se puede hacer
Código: [Seleccionar]
elemento.style.backgroundColor='red'Saludos.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU01165E. Math
« Respuesta #3 en: 27 de Febrero 2016, 18:55 »
El ejercicio 1 ahora si esta completo, solo comentarte una cosa, cuando se acierta el número utilizas un break para salir del while, y a no ser que sea estrictamente necesario, no es una buena práctica, una vez leí a alguien que escribía algo así como que usar un break es como si saliéramos de nuestras casas por la ventana en vez de usar la puerta, que sería lo correcto.

Sobre el ejercicio 3 lo que te decía es que no habías copiado el código entero ;D.
Todo bien en el código, además con dos formas distintas de lograrlo.

Saludos.

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Pedro,, me gusta el ejemplo que has puesto para la explicación del break. ;D ;D

Reinier Garcia

  • Sin experiencia
  • *
  • Mensajes: 9
  • Y el último que apague el Morro!
    • Ver Perfil
    • Perfil en LinkedIn

Respuesta del Ejercicio # 1 del Capítulo 65:

Código: [Seleccionar]
/* Ejercicio 1: Número aleatorio entre 1 y 100 */

function cap65Ejercicio1AdivinarNumeroAleatorio() {

    /* Declaro las variables necesarias */
    var cantidadMaximaNumerosAleatorios = 100;
    var numeroAleatorioEntre1Y100 = Math.floor((Math.random() * cantidadMaximaNumerosAleatorios) + 1);
    var respuestaUsuario = -1;
    var contadorIntentos = 1;
    var limiteMaximoDeIntentos = 12;

    do {

        if (contadorIntentos === 1) { // Se muestra solo la 1ra vez

            respuestaUsuario = prompt('Adivine un número del 1 al ' + cantidadMaximaNumerosAleatorios + '. Tiene ' + limiteMaximoDeIntentos + ' chances. Intento # ' + contadorIntentos);

            if (respuestaUsuario < numeroAleatorioEntre1Y100) { // Respuesta incorrecta por abajo en el 1er intento

                contadorIntentos++;
                respuestaUsuario = prompt('Se quedó corto. Intento # ' + contadorIntentos + '. Adivine el número');

            } else if (respuestaUsuario > numeroAleatorioEntre1Y100) { // Respuesta incorrecta por arriba en el 1er intento

                contadorIntentos++;
                respuestaUsuario = prompt('Se pasó. Intento # ' + contadorIntentos + '. Adivine el número');

            }

        } else { // Para el 2do intento en lo adelante

            if (respuestaUsuario < numeroAleatorioEntre1Y100) { // Respuesta incorrecta por abajo, luego del 1er intento

                contadorIntentos++;
                respuestaUsuario = prompt('Se quedó corto. Intento # ' + contadorIntentos + '. Adivine el número');

            } else if (respuestaUsuario > numeroAleatorioEntre1Y100) { // Respuesta incorrecta por arriba, luego del 1er intento

                contadorIntentos++;
                respuestaUsuario = prompt('Se pasó. Intento # ' + contadorIntentos + '. Adivine el número');

            }

        }

    } while ((respuestaUsuario != numeroAleatorioEntre1Y100) && (contadorIntentos < limiteMaximoDeIntentos))


    /*----------------------------------------------------------------------------------------------------------------------
     -->  Cuando se halló la respuesta correcta o se venció el número de intentos  <-- 
     ---------------------------------------------------------------------------------------------------------------------*/

    if ((respuestaUsuario == numeroAleatorioEntre1Y100) && (contadorIntentos <= limiteMaximoDeIntentos)) { // Acertó el número aleatorio

        if (contadorIntentos === 1) { // Acertó al primer intento. Muy improbable

            alert('Felicidades!! El número es ' + numeroAleatorioEntre1Y100 + '. Acertó al 1er intento. Es increible!!');

        } else { //Acertó luego de varios intentos

            alert('Correcto, el número es ' + numeroAleatorioEntre1Y100 + '. Acertó luego de ' + contadorIntentos + ' intentos');

        }

    } else { // No acertó el número aleatorio, sino que llegó al número máximo de intentos

        alert('Lo sentimos. Ha superado el límite de ' + (limiteMaximoDeIntentos) + ' intentos. El número aleatorio era ' + numeroAleatorioEntre1Y100);

    }

}

Reinier Garcia

  • Sin experiencia
  • *
  • Mensajes: 9
  • Y el último que apague el Morro!
    • Ver Perfil
    • Perfil en LinkedIn

Respuesta del Ejercicio # 2 del Capítulo 65:

Código: [Seleccionar]
/* Ejercicio # 2: Calcular el area de la base y el volumen de un cilindro */

function cap65Ejercicio2CalcularAreaBaseYVolumenDeCilindro() {

    /* Pido al usuario el valor del radio del cilindro */
    var radioCilindro = Number(prompt('Introduzca el radio del cilindro en metros'));

    /* Se repite hasta que se teclee bien el valor del radio */
    while ((radioCilindro == '') || (isNaN(radioCilindro))) {

        radioCilindro = prompt('Introduzca bien el radio del cilindro en metros');

    }

    /* Pido al usuario el valor de la altura del cilindro */
    var alturaCilindro = Number(prompt('Introduzca la altura del cilindro en metros'));

    /* Se repite hasta que se teclee bien el valor de la altura */
    while ((alturaCilindro == '') || (isNaN(alturaCilindro))) {

        alturaCilindro = prompt('Introduzca bien la altura del cilindro en metros');

    }

    /* Calculo el area y el volumen del cilindro */
    var areaCilindro = Math.PI * Math.pow(radioCilindro, 2);
    var volumenCilindro = areaCilindro * alturaCilindro;

    /* Muestro al usuario el resultado de los cálculos */
    alert('El area del cilindro es de ' + areaCilindro.toFixed(2) + ' metros cuadrados \ny su volumen es de ' + volumenCilindro.toFixed(2) + ' metros cúbicos.');
   
}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".