2
respostas

Olá! Tentei usar o "&&" mas deu erro, consegui fazer o código sem o uso dele, mas gostaria de saber o porque desse erro.

<meta charset="UTF-8">
<script>

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

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    function calculaImc (altura,peso){

    return peso/(altura*altura);
    }

var nome = prompt("Qual seu nome?");
var altura=prompt("Qual é a sua altura?");
var peso=prompt("Qual é seu peso?");
var imc=peso/(altura*altura);
mostra(nome+" o seu imc é " +imc.toFixed(2)+".");

document.write("<br>");

if(imc<=18.5){
    mostra("Seu imc está abaixo do recomendado pela OMS, indicando baixo peso");
}

if(imc>=18.5){
    mostra("Seu imc está dentro do recomendado pela OMS.");
}

if(imc>25){
    mostra("Seu imc está acima do recomendado pela OMS, indicando sobrepeso.");
}

if(imc>30){
    mostra("Seu imc está acima do recomendado pela OMS, indicando obesidade.");
}
</script>
2 respostas

Oi Larissa, tudo bem com você?

Manda o código do jeito que você havia tentado fazer usando o && para que a gente possa analisar melhor o que você poderia ter feito! :D

Mas antes mesmo de ver o código, meu chute é que alguma das condições dentro dos ifs tinha alguma contradição. Algo como:

if (imc <= 18.5 && imc >= 18.5) {
    mostra("Seu imc...");
}

É impossível o imc ser menor e maior que 18.5 ao mesmo tempo, o que pode estar gerando um erro.

Outro erro muito comum ao utilizar esses operadores lógicos é esquecer de repetir o nome da variável na segunda parte da comparação:

CERTO

if (imc <= 18.5 && imc >= 18.5) {
    mostra("Seu imc...");
}

ERRADO (faltou o imc antes do >=)

if (imc <= 18.5 && >= 18.5) {
    mostra("Seu imc...");
}

Veja se isso faz sentido e depois me avisa se funcionou! Qualquer dúvida é só avisar!! ;)

Olá, Larissa. Eu gostaria de comentar algo sobre o código que você postou. Você conseguiu realizar o código sem o &&, mas isso gera um problema. Supondo que uma pessoa tenha 1.68 de altura e 120 kg, o IMC dela será de 42.52, consequentemente essa pessoa é obesa. No entanto, a mensagem que aparece no seu código é :

......................................................................................................

Fulano o seu imc é 42.52.

Seu imc está dentro do recomendado pela OMS.

Seu imc está acima do recomendado pela OMS, indicando sobrepeso.

Seu imc está acima do recomendado pela OMS, indicando obesidade.

................................................................................................

Isso ocorre por um problema nos limites do if.

O seu código mostra a frase: "Seu imc está dentro do recomendado pela OMS." para imc >=18.5, isso significa para imc igual 18.5 ou para TODOS os valores maiores que 18.5, então, como no exemplo, se uma pessoa tiver IMC 42.52, seu programa dirá que ela está pesando normalmente.

Essa problemática na delimitação do IMC ocorre também nos :

if(imc>25){

if(imc>30){

Acho que a melhor forma de resolver isso será usando o && da forma como o Thiago Yuji indicou.

Espero ter ajudado :)