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

Condição if, e formula IMC

Alguém pode me responder o que que está errado com a formula do IMC e com o código if? Pois antes de acrescentar as condições if o estava funcionando perfeitamente. agora mesmo se eu remover as condições if, eu não consigo o resultado certo do IMC. e nem as condições if estão funcionando. Passei hj o dia inteiro tentando achar o erro mas para mim está certo. se alguém puder me ajudar fico grato.

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

   function pulaLinha(){

        document.write("<br>"); 
    }
        // Comando Pula linha criado para pular uma linha

    function escreva(Texto){
        //  Lembrete o Texto é com T maiusculo!!!!
        document.write("<center>" + Texto + "</center>");
        pulaLinha();
    }
    function escrevaTitulo(titulo){
        escreva("<h1>"+ titulo + "</h1>");
        pulaLinha();
    }
        // escrevaTitulo, Utilizada para adicionar titulos com espaçamento utilizando a função escrevas que ja centraliza, e h1 q almenta a fonte.

    function calculaImc(altura, peso){
        var imc = peso / (altura * altura);            
        return imc;
    }

    escrevaTitulo("Calculando o  IMC ( indice de Massa Corporal ). ");

    var nomeUsuario = prompt("Informe seu nome");
    var pesoInformado = parseInt(prompt( nomeUsuario + " Digite seu peso. (Ex. 75.5)"));
    var alturaInformada = parseInt(prompt(nomeUsuario + " digite sua altura(Ex. 1.75)"));
    var resultadoImc = calculaImc(alturaInformada, pesoInformado);
    // parseInt transforma testo em numero
    // prompt, pede uma informação para o usuario
    escreva(nomeUsuario+ " o seu IMC é de "+ Math.round(resultadoImc));

    if ( resultadoImc < 19.5 ){
        escreva("voce está abaixo do peso");
    }
    if (resultadoImc >= 19.5 && < 26.4){
        escreva("Você está com o peso ideal");
    }
    if (resultadoImc >= 26.4  && < 31) {
        escreva(" Você está acima do peso");
    }
    if (resultadoImc >= 31 ) {
        escreva("Você está obeso");
    }
 //     if( imc < 19.5 ) Linha de codigo especifica baseada em uma tabela, do indice de massa corporal de 2017. Lembrando que  existem margens erros baseado ems e voce é homem ou mulher. 



    escreva("para mais informações sobre o IMC entre no site da <a href = https://www.google.com.br/?gws_rd=ssl> saúde<a>");




</script>
2 respostas
solução!

Oi, Thiago vamos lá.

Vou começar falando dos problemas dos ifs, tem 2 ifs ai que estão errados. Que são esses aqui:

    if (resultadoImc >= 19.5 && < 26.4){
        escreva("Você está com o peso ideal");
    }
    if (resultadoImc >= 26.4  && < 31) {
        escreva(" Você está acima do peso");
    }

Quando você for verificar um intervalo você tem que colocar a variável nos dois lugares por assim dizer. Você está fazendo:

resultadoImc >= 19.5 && < 26.4

O correto seria:

resultadoImc >= 19.5 && resultadoImc < 26.4

Pegou a diferença?

O outro erro que você questionou é que o resultado estava dando diferente, certo? Na verdade não tem nada de errado com a formula. O que tem de errado estão nessas linhas aqui:

var pesoInformado = parseInt(prompt( nomeUsuario + " Digite seu peso. (Ex. 75.5)"));
 var alturaInformada = parseInt(prompt(nomeUsuario + " digite sua altura(Ex. 1.75)"));

peso e altura são valores float, ou seja, eles são quebrados. Você colocou ali no exemplo 75.5 e 1.75. Quando você coloca esse parsenInt ele transforma esses valores float em inteiros ou seja, esses seus exemplos se tornariam 75 e 1, fazendo assim com que o valor final não seja o esperado.

Faça esses mudanças ai e me fala se resolveu.

Resolveu sim cara, Muito obrigado.

A questão do perseInt, eu achava que ele transformava o resultados neles em numeros, tanto inteiros quanto quebrados. Sua explicação me ajudou a entender como funciona vlw. E na verdade ele tava transformando os numeros do Exemplo que eu coloquei.