Autor Tema: JavaScript calcular el tiempo transcurrido entre dos clicks del usuario CU01163E  (Leído 7083 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes.

Procedo a la exposición de una posible soluciones de los ejercicios de la entrega CU01163E del curso JavaScript desde cero.

Primer ejercicio:

Citar
EJERCICIO 1

Crea un script donde se calcule el tiempo en minutos entre que se formula primera petición al usuario y este responde, y entre una segunda petición al usuario y este responde. Ejemplo:

Introduzca su nombre: Alfredo >> Introduzca su país: Colombia >> Han pasado 0.122 minutos entre su primera y segunda respuesta.

Otro ejemplo: Introduzca su nombre: Juan >> Introduzca su país: Chile >> Han pasado 0.73 minutos entre su primera y segunda respuesta.

El codigo:

Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ejemplo aprenderaprogramar.com</title>
<script type="text/javascript">

window.onload = function(){

var pregunta = confirm('Al pulsar aceptar comienza a contar el tiempo. Sabes cuál es la única palabra (en español) que contiene las 5 vocales"?');

if(pregunta==true){
var primeraToma = Date.now();
}else{};

var pista = ["M","u","r","c","i","e","l","a","g","o"];
var ayuda = ' ';
i = 0;

do{
var contestacion = prompt('Pon la respuesta aquí:');
contestacion = contestacion.toLowerCase();
if(contestacion!='murcielago' && i<pista.length-1){
ayuda = ayuda+pista[i];
alert('Respuesta Incorrecta!\nEmpieza por: '+ayuda);
i++;
}else if(contestacion!='murcielago'){
alert('La respuesta es: '+ayuda+pista[i]);
i++;
}
}while(contestacion!='murcielago' && i<pista.length);

if(contestacion){
var segundaToma = Date.now();
}

resultado = (segundaToma-primeraToma)/1000;

alert("Has contestado en: "+resultado+" segundos!!!");
if(resultado<10){
alert('Eres un crack!!!');
}else if(resultado>10 && resultado<20){
alert('Eres un poco lento');
}else{
alert('Muy lento');
}
}

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

El segundo ejercicio:

Citar
EJERCICIO 2

Crea un script donde pida al usuario que introduzca una primera fecha (fecha1) en formato dd-mm-yyyy, y una segunda fecha en el mismo formato y calcule los días que han pasado entre las dos fechas . Ejemplo: Introduzca la fecha 1: 05-09-2076 >> Introduzca la fecha 2: 09-09-2076 >> Entre las 00:00 horas del primer día a las 00:00 del segundo hay 4 días.

El código:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo aprenderaprogramar.com</title>
<style type="text/css">
#principal{
text-align: center;
padding: 100px;
font-size: 24px;
}
</style>
<script type="text/javascript">

var primeraEntrada = prompt('Entra una fecha en formato: aaaa-mm-dd');
primeraEntrada = primeraEntrada+'T00:00:00';
primeraEntrada = Date.parse(primeraEntrada);

var segundaEntrada = prompt('Entra una segunda fecha en formato: aaaa-mm-dd');
segundaEntrada = segundaEntrada+'T00:00:00';
segundaEntrada = Date.parse(segundaEntrada);

if(segundaEntrada<primeraEntrada){
var resultado = ((((primeraEntrada - segundaEntrada)/1000)/60)/60)/24;
}else{
var resultado = ((((segundaEntrada - primeraEntrada)/1000)/60)/60)/24;
}

if(resultado == 1){
resultado = 'Entra las dos fechas ha pasado: '+resultado+' día';
}else{
resultado = 'Entra las dos fechas han pasado: '+resultado+' días';
}

window.onload = function(){
principal.innerHTML = resultado;
}

</script>
</head>
<body>
<div id="principal"></div>
</body>
</html>

Gracias.
« Última modificación: 29 de Marzo 2016, 15:29 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

El ejercicio 1 lo veo resuelto de una forma muy original

El ejercicio 2 también lo veo muy bien resuelto, aunque aquí no me ha gustado mucho la organización del código, me refiero a pedir las fechas y después dar la respuesta con el window.onload (veo preferible que se ejecute el código cuando se pulsa un botón por ejemplo como hace Pedro en https://www.aprenderaprogramar.com/foros/index.php?topic=3536.0)

También has cambiado el formato que tenía que ser dd-mm-yyyy por yyyy-mm-dd

De cualquier forma buen trabajo

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes, César Krall.

Primero que nada, gracias por tu tiempo y por corregirme el ejercicio.

Tienes razón, debería de haberlo puesto como una ejecución de un botón. Reconzco que mis códigos son un poco "caóticos" a veces, jeje. Tendría que tener más cuidado y hacerlos más organizados.

Sobre la fecha, es verdad, no me había dado cuenta. Lo modificaré. También miraré el enlace de Pedro.

Saludos.

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Visto el código de Pedro.

Debo reconocer que es un código mucho más organizado que el mío y más estilizado. Utiliza los métodos "substing()" de forma adecuada y, de este modo,  ahorra la inclusión de variables innecesarias.

Saludos.

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Hola dimiste,
sobre el ejecricio 1, indicarte dos cosas.
1.Al contestar la pregunta inicial hace lo mismo si le le das a Aceptar o a Cancelar.
2.Cuando tienes que introdicir la palabra, si no llegas a poner la palabra que tu pides, no marca los segundos que han pasado o indicar que no ha adivinado la palabra, el mensaje que sale en la ventana alert es un --> 'Has contestado en: Nan segundos!!!'

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas, bermartinv.

Gracias por la observación. Creo que nadie se había dado cuenta de ese fallo.

Con la modificación que hice pienso que ahora contempla esas dos circunstancias.

Pongo el código modificado, a continuación:

Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ejemplo aprenderaprogramar.com</title>
<script type="text/javascript">

window.onload = function(){

var pregunta = confirm('Sabes cuál es la única palabra (en español) que contiene las 5 vocales"?');

if(pregunta==true){
var primeraToma = Date.now();
}else{}

var pista = ["M","u","r","c","i","e","l","a","g","o"];
var ayuda = ' ';
i = 0;

if(pregunta){
do{
var contestacion = prompt('Pon la respuesta aquí:');
contestacion = contestacion.toLowerCase();
if(contestacion!='murcielago' && i<pista.length-1){
ayuda = ayuda+pista[i];
alert('Respuesta Incorrecta!\nEmpieza por: '+ayuda);
i++;
}else if(contestacion!='murcielago'){
alert('La respuesta es: '+ayuda+pista[i]);
i++;
}
}while(contestacion!='murcielago' && i<pista.length);

var segundaToma = Date.now();

resultado = (segundaToma-primeraToma)/1000;

if(contestacion == "murcielago"){
alert("Has contestado en: "+resultado+" segundos!!!");
if(resultado<10){
alert('Eres un crack!!!');
}else if(resultado>10 && resultado<20){
alert('Eres un poco lento');
}else{
alert('Muy lento');
}
}else{
alert("No has podido contestar correctamente!\nHan pasado: "+resultado+" segundos desde que has empezado");
}
}
}

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

Compruébalo.

Gracias

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Ahora OK!!

 

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".