Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Calculo de IMC.

Estou tentando colocar todas as informações certinhas de IMC porém no resultado ele está me retornando com as duas mensagens:

Isa, o seu IMC é de 28.720083246618103

Você está com sobrepeso - Acima do peso recomendado.

Seu IMC está excelente. Alguém consegue me ajudar a identificar o erro

<meta charset="utf-8">
<h1> Calcule seu IMC!</h1>
<script>

  function pulaLinha () {

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

}

function mostra(frase) {

    pulaLinha();
    document.write(frase);

}

function calculaImc(altura, peso){

    return peso / (altura * altura);


}

var nome = prompt("Informe o seu nome")
var alturaInformada = prompt(nome + ", informe sua altura:");
var pesoInformado = prompt(nome + " ,informe seu peso:");

var imc = calculaImc(alturaInformada, pesoInformado);

document.write(nome + ", o seu IMC é de " + imc); 

if(imc < 18.5){

    mostra("Você está abaixo do peso recomendado.");

}

if (imc > 25 && imc < 29,9){

        mostra("Você está com sobrepeso - Acima do peso recomendado.");

}

if ( imc > 18.5 && imc < 24,9){

        mostra("Seu IMC está excelente.");

}


if(imc >= 30){

    mostra("Você está com obesidade");

}


</script>
1 resposta
solução!

Oi Isabela, tudo bem?

O problema que você relatou está relacionado com os parâmetros informados na estrutura condicional. No seu código temos:

if (imc > 25 && imc < 29,9){
        mostra("Você está com sobrepeso - Acima do peso recomendado.");
}

if ( imc > 18.5 && imc < 24,9){
        mostra("Seu IMC está excelente.");
}

Podemos perceber que ao informar os valores 29.9 e 24.9 você utilizou a vírgula para separar as casas decimais, e isso gerou em erro de leitura do programa, pois a vírgula no JavaScript é utilizada para separar mais de um parâmetro em uma função, para separar elementos de uma lista entre outras funcionalidades.

Para solucionarmos esse problema, podemos utilizar o ponto no lugar da vírgula, fazendo com que o trecho que código seja escrito da seguinte maneira:

if (imc > 25 && imc < 29.9){
        mostra("Você está com sobrepeso - Acima do peso recomendado.");
}

if ( imc > 18.5 && imc < 24.9){
        mostra("Seu IMC está excelente.");
}

Uma observação que gostaria de fazer no seu código é a respeito do arredondamento do valor do IMC que pode ser aplicado por meio da função Math.round(). Dessa forma, o código da função calculaIMC (altura, peso) ficaria como mostrado abaixo:

function calculaImc(altura, peso){
    return Math.round(peso / (altura * altura));
}

Com isso podemos aperfeiçoar o código e melhorar a legibilidade dos valores informados na tela.

Espero ter ajudado. Caso tenha outras dúvidas, estarei à disposição!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!