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

Mi Codigo IMC ¡Ayuda!

Hola tengo detalles con mi codigo ya que me aparecen 2 variables que son peso normal y sobre peso Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidady este es el codigo, no encuentro el detalle con el.

<meta charset="UTF-8">

<h1>PROGRAMA CALCULO IMC</h1>

<script>

    alert("Proyecto Final de Lógicas de Programación de One")

    function saltarlinea() {

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

    }

    function imprimir(frase) {

        document.write(frase)
        saltarlinea();

    }

    function calcularImc(peso,altura) {

        return (peso / (altura * altura));

    }

    nombre = prompt("Informe su nombre")
    pesoInformado = prompt(nombre + " Informe su peso");
    alturaInformado = prompt(nombre + " Informe su altura");

    imcCalculado = calcularImc(pesoInformado,alturaInformado)

    imprimir(nombre + ", su IMC calculado es: " + imcCalculado);

    if (imcCalculado < 18.5) {
       imprimir("IMC Abajo de lo recomendado");
    }

    if (imcCalculado >= 18.5) {
        if(imcCalculado > 25){

           imprimir("IMC esta dentro del intervalo normal");

        }

    }

    if (imcCalculado >= 25) {
        if(imcCalculado < 30){

          imprimir("IMC esta dentro del intervalo de Sobrepeso");

        }

    }

    if (imcCalculado >= 30) {
       imprimir("IMC esta dentro del intervalo de Obesidad");
    }

</script>
2 respuestas

El problema esta en la parte de las condiciones "if" el valor de icmCalculado para este caso es de 27.17, por lo tanto esta entrando en ambas condiciones if mostrandote los dos mensajes, observa que 27.17 es mayor a 18.5, tambien es mayor que 25 pero no mayor o igual a 30.

if (imcCalculado >= 18.5) {
        if(imcCalculado > 25){   //<-Tienes un error de dedo aqui tendria que ser if(imcCalculado < 25)
           imprimir("IMC esta dentro del intervalo normal");
        }
    }

Una manera mas simplista de solucionar esto es utilizando las codiciones if, else if y else.

if: Evalua un valor con respecto a una condicion else if: Evalua un valor con respecto a una condicion, si la condicion anterior no se satisface else: Se ejecuta si ninguna de las condiciones anteriores se satisface

If(imcCalculado < 18.5){
    imprimir("IMC abajo de lo recomendado")
} else if(imcCalculado < 25){
    imprimir("IMC en el intervalo normal")
} else if(imcCalculado < 30){
    imprimir("IMC en el intervalo de sobrepeso")
}else{
    imprimir("IMC en el intervalo de obesidad")
}

Tambien puedes utilizar el operador logico AND - &&:

Operador AND: Ejecuta el bloque si ambas evaluaciones son verdaderas

If(imcCalculado < 18.5){
    imprimir("IMC abajo de lo recomendado")
} 
if(imcCalculado >= 18.5 && imcCalculado < 25){
    imprimir("IMC en el intervalo normal")
}
if(imcCalculado >= 25 && imcCalculado < 30){
    imprimir("IMC en el intervalo de sobrepeso")
}
if(imcCalculado >= 30){
    imprimir("IMC en el intervalo de obesidad")
}

Gracias, voy a probarlo