Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Meus "if's" não estão funcionando

Pessoal, empaquei na aula sobre a calculadora inteligente de IMC, ela mostra o resultado na tela certinho, mas na hora das condicionais if não está fazendo a diferenciação de IMC acima, abaixo ou na média, alguém conseguem me dar uma luz?

  <meta charset="UTF - 8">

<script>

    function pulaLinha() {

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

    function mostra(frase) {

        document.write(frase);
        pulaLinha(); 
    }

    function calculaImc(altura, peso) {

        return peso / (altura * altura);
    }

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

    var imc = calculaImc (alturaInformada, pesoInformado);

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

    if(imc < 18.5) {

        mostra("Você está com o IMC abaixo do recomendado");
    }

    if (imc > 35){

        mostra("Você está com o IMC acima do recomendado");
    }

    if(imc >= 18.5) {

        if(imc <= 35) {

            mostra("Seu IMC está excelente")
        }
    }

</script>  

Todo o código antes dos "If's" funciona normalmente e ainda não consegui identificar onde está o erro :(

2 respostas
solução!

Boa noite Lucas.

Fiz um teste rápido aqui utilizando pesos e alturas diferentes a fim de atingir as 3 faixas de IMC e não obtive problema com o seu código.

Seria interessante você informar os dados que está utilizando nos testes para verificarmos.

Um ponto de atenção é a entrada das casas decimais da altura e peso, voce deve utilizar o ponto "." ao invés da virgula "," como separador, caso contrário pode ter alguns erros. A altura também deve ser inserida em metros e não em centimetros.

Não sei exatamente em ponto do curso voe está mas o ideal seria utilizar uma estrutura de if/else ao inves desta estrutura de if's aninhados, por exemplo:

if (imc < 18.5) {
    console.log("Você está com o IMC abaixo do recomendado");
} else if (imc > 35){
    console.log("Você está com o IMC acima do recomendado");
} else {
    console.log("Seu IMC está excelente");
}

A lógica fica mais clara e o codigo mais conciso.

Abraço!

Obrigado pelo esclarecimento, Fernando! Realmente rodei o código em outra máquina e rodou de boa. Estou numa fase do curso onde o professor ainda não entrou nos "else's", mas obrigado pela dica, certamente nas próximas aulas eu já vou conseguir "enxugar" esse código, bom dia!