Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
5
respuestas

Ejercicio con prompt, ayuda!!

Hola, alguien me podría ayudar realizando los ejercicios sobre el IMC, intente realizar todo lo enseñado pero en la parte donde ocupo la función promedio algo sale mal ya que da un resultado calculado erróneo, alguien sabra por donde podria estar mi error, gracias

El promedio del IMC calculado de Christian y Felipe es: 37

El promedio del IMC de David y hugo es: 356

El promedio del IMC calculado de Christian y Felipe es: 37

El promedio del IMC de David y hugo es: 36

<meta charset="UTF-8">
<h1>PROGRAMA Calcular promedio del IMC </h1>
<script>
    function saltarLinea() {
        document.write("<br>","<br>","<br>");      
    }  
    function imprimir(frase) {
        document.write(frase);
        saltarLinea();
    }
    function calcularImc (peso, altura){
        return (peso / (altura*altura));  
     }
     function promedio (imc1, imc2){
        return ((imc1+imc2)/2);
     }

     nombre = prompt("Cual es su nombre")
     pesoInformado = prompt(nombre +", cual es su peso")
     alturaInformada = prompt(nombre + ", cual  es su altura")

     nombrex= prompt("Cual es su nombre")
     pesoInformadox = prompt(nombrex +", cual es su peso")
     alturaInformadax = prompt(nombrex + ", cual  es su altura")


imprimir("El promedio del IMC calculado de Christian y Felipe es: " + Math.round((calcularImc(pesoInformado,alturaInformada) + calcularImc(pesoInformadox,alturaInformadax)/2)) );
imprimir("El promedio del IMC de "  + nombre + " y " + nombrex + " es: " +  Math.round(promedio(pesoInformado,alturaInformada,pesoInformadox,alturaInformadax)) ) ;  

imprimir("El promedio del IMC calculado de Christian y Felipe es: " + Math.round((calcularImc(71,1.72) + calcularImc(75,1.73)/2)) );
imprimir("El promedio del IMC de "  + nombre + " y " + nombrex + " es: " +  Math.round(promedio(71,1.72,75,1.73)) ) ;  
</script>
5 respuestas

Hola David,

Quizá se porque definiste function promedio (imc1, imc2) para recibir solo 2 parámetros y en la linea imprimir("El promedio del IMC de " + nombre + " y " + nombrex + " es: " + Math.round(promedio(pesoInformado,alturaInformada,pesoInformadox,alturaInformadax)) ) ; estás pasando 4 valores a la función.

Saludos,

Que tal Julio, aunque en la ultima lineal esta definido igual dos parámetros pero aquí puso los valores y si sale,

imprimir("El promedio del IMC de "  + nombre + " y " + nombrex + " es: " +  Math.round(promedio(pesoInformado,alturaInformada,pesoInformadox,alturaInformadax)) ) ;  

imprimir("El promedio del IMC de "  + nombre + " y " + nombrex + " es: " +  Math.round(promedio(71,1.72,75,1.73)) ) ;

imprimir("El promedio del IMC calculado de Christian y Felipe es: " + Math.round((calcularImc(pesoInformado,alturaInformada) + calcularImc(pesoInformadox,alturaInformadax)/2)) );

Ojo: ahí estás dividiendo solo el segundo valor y luego suma, quizás debiste poner unos paréntesis para la suma.

Y una sugerencia, al tratar de leer lo que imprimes es confuso ver el Math.round el calcularImc, promedio, quizás todos los cálculos puedas hacerlos en las funciones, y en imprimir solo envías las variables que tienen los resultados. Pero claro, como se te haga mas fácil, manéjalo. =)

Hola David,

En ambos casos tu función "promedio" solo trabaja con los dos primeros valores.

En el caso de la primera, las variables "pesoInformado" y "alturaInformada" al ser capturadas con prompt(), realmente son strings por lo que no se están sumando los valores sino que se están concatenando, en este caso los dos primeros valores son "71" y "1.72" si tu función "promedio" indica lo siguiente ((imc1+imc2)/2), entonces lo que daría sería: (("71"+"1.72")/2) = (("711.72")/2) = 355.86 y redondeando seria 356.

Para solucionar esto puedes capturar los valores con parseFloat() :

pesoInformado = parseFloat(prompt(nombre +", cual es su peso"))
alturaInformada = parseFloat(prompt(nombre + ", cual  es su altura"))

De todas formas como mencioné tu función promedio debe recibir solo dos parámetros, en este caso los imc, sería así:

imprimir("El promedio del IMC de "  + nombre + " y " + nombrex + " es: " +  Math.round(promedio((calcularImc(pesoInformado,alturaInformada),calcularImc(pesoInformadox,alturaInformadax))))) ;

imprimir("El promedio del IMC de "  + nombre + " y " + nombrex + " es: " +  Math.round(promedio((calcularImc(71,1.72),calcularImc(75,1.73))))) ;