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

Dúvida IMC - função if

Caros, por iniciativa própria procurei implementar mais informações no exercício de IMC, seguindo uma pesquisa no google. O problema é que ele não está mostrando o detalhe do imc da pessoa. Por exemplo: IMC > 18.5 = você está abaixo do peso.

Usei o seguinte código:

<meta charset="utf-8">

<script type="text/javascript">

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

    function mostra(variavel) {

        document.write(variavel)
        pulalinha ();

    }

    function calculaIMC(altura, peso) {
        return peso / (altura*altura)

    }

    var nome = prompt("Informe seu nome")
    var alturaInformada = prompt(nome+", informe sua altura. Use pontuação para separar as casas decimais. Ex: 1.70");
    var pesoInformado = prompt(nome+", informe seu peso");
    var imc = calculaIMC(alturaInformada, pesoInformado)
    mostra(nome+", seu IMC é de "+imc);

    if (imc < 18.5){
        mostra ("Você está abaixo do peso")
    };
    if (imc >= 18.6 && imc <= 24.9) {
        mostra("Você está com o peso ideal")
    };
    if (imc >=25.0 && imc <=29.9){
        mostra("Você está levemente acima do peso")
    };
    if (imc >=30.0 && imc <= 34.9) {
        mostra("Você tem obesidade")
    };
    if (imc>=35.0 && imc <=39.9) {
        mostra("Você tem obesidade grau II (severa)")
    };
    if (imc>=40) {
        mostra("Você tem obesidade grau III (mórbida)")
    }


</script>
2 respostas
solução!

Fala aí, Leonardo! Tudo certo, cara? =)

Eu não sei se entendi direito sua dúvida, poderia refraseá-la, por favor? =D

Mas, adiantando uma coisinha que vi no seu código... Repare que ele possui gaps de intervalos:

if (imc < 18.5) { ... };
if (imc >= 18.6 && imc <= 24.9) { ... };
if (imc >= 25 && imc <= 29.9) { ...};
...

Dê uma olhada nos dois primeiros if... No primeiro, você está verificando se o IMC é menor do que 18.5, ou seja, se o IMC for igual a 18.5, ele não cairá nesse intervalo.

Já no segundo, você verifica se ele é maior ou igual a 18.6 e menor ou igual a 24.9. Repare que ele também não pega o valor 18.5, sacou?

O que você pode fazer para melhorá-lo é o seguinte:

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

Conseguiu ver a diferença? Parece pequena, mas tem infinitos números que não estão contemplados da forma que você escreveu... =|

Assim, sempre usamos menor e maior ou igual. =)

Ahh, uma outra coisinha é que não é necessário colocar o ponto-e-vírgula após as chaves dos if... Não sei se não é necessário ou se é proibido, mas não é comum ver esses pontos-e-vírgulas por aí... Rs...

Sacou?

Espero ter ajudado, mas qualquer dúvida não deixe de postar por aqui no fórum para que possamos ajudá-lo! =D

Abraço e bons estudos,

Fábio

Era justamente o "<=" faltante no primeiro "if"!

Obrigado fábio!