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

Aplicando a função "se" (if) para programa de calculo de imc, todos os resultados são exibidos. O que pode estar errado?

<meta charset="UTF-8">

<script>

function puloLinha() {

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

function mostra(texto) {

    document.write(texto);
    puloLinha();

}

function calculaImc(altura, peso) {

    var imc = peso / (altura * altura);
    return imc

}


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

var imc = calculaImc(alturaInformada, pesoInformado);

document.write(nome +", o imc calculado é " + Math.round(imc));

puloLinha()

if(imc < 18.5); {

    mostra("Você está magrelo(a)");
}

if(imc > 18.5 && imc < 24.9); {

    mostra("Você está fitness. Parabéns!!");

}

if(imc > 25 && imc < 29.9); {

    mostra("você está gordinho(a)!! Cuidado com a barriguinha");

}

if(imc > 30 && imc < 34.9); {

        mostra("Você está balofo(a)!!");

}

if(imc > 35 && imc < 39.9); {

        mostra("Você está f*&%$* de gordo(a)");

}

if(imc > 40); {

    mostra ("Liga para o Discovery Channel, você será pauta de um ótimo documentário.");
}

</script>

Na hora de rodar o programa tudo funciona, porém o retorno é o seguinte:

Vinícius, o imc calculado é 25

Você está magrelo(a)

Você está fitness. Parabéns!!

você está gordinho(a)!! Cuidado com a barriguinha

Você está balofo(a)!!

Você está f&%$ de gordo(a)

Liga para o Discovery Channel, você será pauta de um ótimo documentário.

Importante ressaltar que o exercício do curso é mais simples, eu adicionei outras condições para deixar o programa mais completo.

2 respostas
solução!

Oi Vinícius, seu erro é apenas que depois dos ifs você tá colocando um ; o certo é apenas

if (condição) {
}

Vinícius, uma observação:

Quando voce cria um if assim:

if(imc > 18.5 && imc < 24.9) {
    mostra("Você está fitness. Parabéns!!");
if(imc > 25 && imc < 29.9) {
    mostra("você está gordinho(a)!! Cuidado com a barriguinha");
}

na sua condição não tá incluso nem o 24.9, nem o 18.5, consequentemente nem o 25 nem o 29.9. Nesse casso se eu tenho um imc que ele retorna o valor exato de 25 o seu código não iria imprimir nada, você pode testar isso se você não chamar o método do calculo do imc e atribuir ao imc o valor 25 .

o certo seria:

if(imc < 18.5) {
...
}

if(imc >= 18.5 && imc < 25) {
...
}

if(imc >= 25 && imc < 30) {
...
}

if(imc >= 30 && imc < 35) {
...
}

if(imc >= 35 && imc < 40) {
...
}

if(imc >= 40){
...
}