Solucionado (ver solución)
Solucionado
(ver solución)
6
respuestas

Alguien sabe por qué no me da?

El código ejecuta pero no muestra el resultado correctamente

<meta charset="UTF-8">

<h1>Programa promedio de las edades de una familia</h1>
<br>
<hr>
<br>
<br>

<script>

    function saltarLinea() { // esta función nos permite saltar 3 líneas

        document.write("<br><br><br>"); 

    }

    function imprimir(frase) { // esta función nos permite imprimir en pantalla el texto que queremos mostrar

        document.write("<big>" + frase + "</big>");  // la etiqueta "big" permite que la fuente sea mas grande
        saltarLinea();

    }

    var miembrosFamilia = parseInt(prompt("Cuántos miembros hay en tu familia"));
    var edadMiembro = parseInt(prompt("Cuántos años tiene tu familiar"));
    var edadTotal = 0;
    var contador = 1;

    while (contador <= miembrosFamilia) {

        edadTotal = edadMiembro + edadTotal;
        contador++;

    }

    var edadMedia = edadTotal / miembrosFamilia;

    imprimir("la edad promedio de tu familia es de " + edadMedia + " años.");
    imprimir("Fin del programa.")


</script>
6 respuestas
solución!

Hola Angel,

Solo tienes un detalle: Debes incluir en el bucle while la pregunta de cuantos años tiene u familiar..?

 while (contador <= miembrosFamilia) {
        var edadMiembro = parseInt(prompt("Cuántos años tiene tu familiar"));

        edadTotal = edadMiembro + edadTotal;
        contador++;

    }

Holaa, lo que pasa es que tu codigo no se repetía la cantidad de veces igual a los miembros, solo se ejecutaba una vez, por lo que contador nunca dejaba de ser uno, porque no se repetía jamás, así debería de funcionarte, organizando esta parte del codigo. No olvides calificar mi respuesta. Saludos.

var miembrosFamilia = parseInt(prompt("Cuántos miembros hay en tu familia"));
    var edadTotal = 0;
    var contador = 1;

    while (contador <= miembrosFamilia) {
        var edadMiembro = parseInt(prompt("Cuántos años tiene tu familiar"));
        edadTotal +=edadMiembro;
        contador++;

    }

    var edadMedia = edadTotal / miembrosFamilia;

    imprimir("la edad promedio de tu familia es de " + edadMedia + " años.");
    imprimir("Fin del programa.")

Vale, gracias por la respuesta.

Hola Angel,

Estuve viendo tu codigo y creo que el problema esta en esta parte del codigo


var miembrosFamilia = parseInt(prompt("Cuántos miembros hay en tu familia"));
var edadMiembro = parseInt(prompt("Cuántos años tiene tu familiar"));
var edadTotal = 0;
var contador = 1;
while (contador <= miembrosFamilia) {
    edadTotal = edadMiembro + edadTotal;
    contador++;
 }

Solo se pregunta por la "edadMiembro" una sola vez ya que la linea de codigo se encuentra fuera del bucle while. Para solucionar esto lo que tenes que hacer es poner el codigo en el que consultamos la edad dentro del bucle para que este se repita la cantidad de veces necesarias.

Entonces el codigo quedaria así

var miembrosFamilia = parseInt(prompt("Cuántos miembros hay en tu familia"));
var edadMiembro = 0;
var edadTotal = 0;
var contador = 1;

    while (contador <= miembrosFamilia) {
    edadMiembro = parseInt(prompt("Cuántos años tiene tu familiar"));
        edadTotal = edadMiembro + edadTotal;
        contador++;
    }

Tambien hay otra forma de plantear este codigo que a mi parecer es "mas correcta" y es utilizando un bucle for con el siguiente codigo

    var miembrosFamilia = parseInt(prompt("Cuántos miembros hay en tu familia"));
    var edadMiembro = 0;
    var edadTotal = 0;

    for (var i = 0; i < miembrosFamilia; i++)  {
        edadMiembro = parseInt(prompt("Cuántos años tiene tu familiar"));
        edadTotal = edadMiembro + edadTotal;
    }

Si no se entiende algo de lo explicado, no dudes en consultarme!

veo que ambas instrucciones "while" y "for" se pueden usar indistintamente en este caso, pero, ¿cuando es aconsejable usar la una o la otra? Les agradecería su respuesta

Hola Angel,

Tanto while *como *for se usan para hacer bucles. Depende de ti como programador cual utilizar. Lo único que tienes que estar al pendiente es de cumplir con la sintaxis de cada uno. Por ejemplo: Para recorrer un Array, yo utilizo un for. y para hacer preguntas que deben cumplir una condición uso un while ("mientras")