4
respostas

Comando não está agindo como planejado

<meta charset="utf-8">

<script>

    function pularlinha(){

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

    function mostra(frase){

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

    function calcularimc(altura, peso){

        return peso / (altura * altura);
    }
var nome = prompt("Informe seu nome: ");

        var alturaInformada = prompt(nome + " informe sua altura.");

        var pesoInformado = prompt(nome + " informe seu peso.");

        var imc = calcularimc(alturaInformada, pesoInformado);
mostra(nome + " o seu imc é " + imc + ".");

            if(imc < 18.5) {
                mostra("Você está magro demais.")
        }

            if(imc > 35){

                mostra("você está acima do recomendado.")
        }

        if(imc >= 18.5 && imc <= 25);{ 

                 mostra("Seu imc está na média.");
        }

</script>

a frase seu imc está na média deveria aparecer somente quando o resultado der entre 18.5 e 25, porém ela aparece tanto quando o resultado é menor que 18.5, quanto o resultado é maior que 25. Preciso de ajuda,

4 respostas

Oi Derek,

o seu problema está no próprio if

         if(imc >= 18.5 && imc <= 25);{ 

                 mostra("Seu imc está na média.");
        }

se você reparar bem entre o (e o {tem um ;, isso faz o JavaScript entender que acabou aí o ife o bloco seguinte é simplesmente um bloco a ser executado, basta retirar o ;

 if(imc >= 18.5 && imc <= 25);{ 
    mostra("Seu imc está na média.");
}

Oi Derek como disse nosso colega acima esse ponto e vírgula realmente faz toda a diferença, remova ele a sintaxe correta seria:

 if(imc >= 18.5 && imc <= 25){ 
    mostra("Seu imc está na média.");
}

E uma solução para o mesmo problema seria assim:

<meta charset="utf-8">

<script>

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

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

    function calcularImc(altura, peso){
       return peso / (altura * altura);
    }

    var nome = prompt("Informe seu nome: ");
    var alturaInformada = prompt(nome + " informe sua altura.");
    var pesoInformado = prompt(nome + " informe seu peso.");
    var imc = calcularImc(alturaInformada, pesoInformado);
    mostra(nome + " o seu imc é " + imc + ".");
            if(imc < 18.5) mostra("Você está magro demais.");
            else if(imc > 35) mostra("você está acima do recomendado.");
            else mostra("Seu imc está na média.");

</script>

Como utilizei apenas uma instrução após os if's eu omiti os parenteses e ao fim de cada instrução coloquei ponto e vírgula, além de usar else if e formato camelCase no nome da minha função. Espero ter ajudado.

Oi Derek, caso persista alguma dúvida a respeito desse exercício pode perguntar aqui mesmo ou se você não tiver mais nenhuma dúvida a respeito você pode marcar uma resposta como solução, finalizando assim esse tópico.Espero ter ajudado. Bons estudos.

Oi Derek, caso persista alguma dúvida a respeito desse exercício pode perguntar aqui mesmo ou se você não tiver mais nenhuma dúvida a respeito você pode marcar uma resposta como solução, finalizando assim esse tópico.Espero ter ajudado. Bons estudos.