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

A função "&&" não está funcionando

<meta charset="UTF-8">

<script>

function pulaLinha(){

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

    function mostra (frase) {

        document.write(frase);
        pulaLinha();

    }

    function calculaImc(peso, altura) {    

        return peso / (altura * altura);

    }


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

    var imc = calculaImc(alturaInformada, pesoInformado)

    mostra(nome + ", o seu IMC é "  + imc);

    if (imc > 18.5) {

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

    }

    if (imc > 40) {

        mostra("Você está acima do recomendado!");

    }

    if (imc >= 18.5 && imc <= 40) {

        mostra("Seu IMC está excelnte!");

    }

    mostra("FIM");


</script>
1 resposta
solução!

Oi Luis, tudo bem?

O problema está na chamada do método calculaImc:

calculaImc(alturaInformada, pesoInformado)

Perceba que na função que você criou, a ordem dos parâmetros é peso e depois altura:

function calculaImc(peso, altura) {    
    // Código omitido
}

Como ficou a ordem ficou invertida na chamada, a alturaInformada que estamos passando está sendo atribuída ao peso, enquanto o pesoInformado está sendo atribuído à altura. Acredito que invertendo a ordem dos parâmetros na chamada já deve resolver:

calculaImc(pesoInformado, alturaInformada)

Só mais um detalhe, no primeiro if, o correto seria usar o sinal de < para checar se o imc está abaixo do recomendado:

if (imc < 18.5) {
    mostra("Você está abaixo do recomendado!");
}

De resto, tanto a sua lógica como o uso do operador lógico && estão corretos!

Espero ter ajudado, se ficou qualquer dúvida estou aqui!

Bons estudos!!