Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
4
respuestas

DUDA SOBRE APLICACION DEL PARSEINT EN EL PROBLEMA IMC

Hola a todos ,

Lo que sucede es lo siguiente: cuando se esta aplicando el prompt para consultar peso y altura, he querido aplicar el parseInt para garantizar que los datos ingresados son numeros, pero lo que sucede es que la funcion solo lanza como resultado el valor del peso y no realiza la division.

Sin embargo si elimino los parseInt el programa funciona perfectamente.

Alguien podria explicarme por que razon la funcion se ve afectada por los parseInt en los prompt de peso y altura??? Pues mi comprension sobre este caso es que ambas situaciones deberian lanzar el resultado correcto.

A continuacion dejo copia del codigo que me lanza un valor erroneo, dejando solo el peso como el valor del imc.

<meta charset="UTF-8">

<h1>CALCULAR IMC </h1>


<script>

function saltarlinea (){
    document.write("<br><br><br>");
}

function imprimir (frase){
    document.write("<big>" + frase + "</big>");
    saltarlinea();
}


function calcularImc (peso,altura){

    return imc = (peso/(altura * altura));

}

nombre = prompt ("Escriba su nombre");
peso1 =  parseInt (prompt ("Escriba su peso"));
altura1 = parseInt (prompt ("Escriba su altura"));

imccalculado = calcularImc (peso1, altura1);

imprimir("El imc calculado para " + nombre + " es " + imccalculado);



if (imccalculado < 18.5) { imprimir("Su IMC indica que esta por debajo del peso normal.");}

if (imccalculado >= 18.5 && imc <= 24.9) { imprimir("Su IMC indica que esta dentro del rango del peso normal.");}

if (imccalculado >= 25 && imc <= 30) { imprimir("Su IMC indica que esta con sobrepeso.");}

if (imccalculado > 30) { imprimir("Su IMC indica que sufre de obesidad.");}



</script>
4 respuestas

Hola, no lo pude correr, pero a simple vista cuando declaras las variables nombre, peso y altura lo tenes que hacer anteponiendo el tipo "var". Y otra cosa que no se si influye pero en la función "calcularImc" el return tiene que ser la formula direcatamente ... "return (peso/ altura * altura)". Tenes que sacar tambien la variable imc si no la declaras y le das valor. Tambien tenes mal escrita la variable peso y altura dentro de la funcion calcular imc.

Hola! resolviendo tu duda y el error en código que te presenta, la solución seria que modifiques el: nombre, peso1 y altura1, de modo que te quede el siguiente código: nombre = prompt("informe su nombre"); pesoInformado = prompt(nombre + ", informe su peso"); alturaInformado = prompt(nombre + ", informe su altura");

No veo un motivo para agregarle el parseINT ya que que no realizas ninguna operación dentro de las " " del prompt, que mezcle números con texto, por ende no debería de haber fallos, de todos modos no se si mi respuesta a tu duda es la correcta, se que el código si esta bien, lo demás lo agregue en base a mi razonamiento. Espero haberte ayudado. Sldos!

solución!

Buenas Diego, el detalle si esta en los parseInt, hacerlo con el peso esta bien, pero cuando lo realizas en la altura el parseInt te lo convierte en numero entero, por ende si mides 1.80 en la altura1 se guardara solo 1 porque es lo que estas pidiendo y los resultados no seran los esperados, espero haberte ayudado.

nombre = prompt ("Escriba su nombre");
peso1 =  parseInt (prompt ("Escriba su peso"));
altura1 = parseInt (prompt ("Escriba su altura"));

Gracias a todos por sus aportes!!!

Efectivamente, como indica Javier Ortega, es por que redondea la altura y recibo una division por 1.