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

Quando coloco para medir o IMC sempre me dá o peso que digitei.

Toda vez que coloco para calcular o "IMC" me dá a ultima informação que digitei. Já conferi e não consegui identificar meu erro.

meta charset="UTF-8">

<script>


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

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

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



    var altura = parseInt(prompt("Digite sua altura."));
    var peso = parseInt(prompt("Digite seu peso."));

    calculaImc(altura, peso);

    if (imc < 18.5)
    {
        mostra("seu IMC de " + imc + " indica que vc está abaixo do peso");
    }
    if (imc > 35 )
    {
        mostra("seu IMC de " + imc + " indica que vc está acima do peso ideal");
    }

    if (imc >= 18.5 && imc <= 35)

    {
        mostra("OK!, seu IMC de " + imc + " indica que vc está entre os 2 limites!")
    }

</script>
9 respostas

Oi Johabe!

Faz o seguinte, na linha

calculaImc(altura, peso);

Muda para

var imc = calculaImc(altura, peso);

Testa e ve se funciona! Abração (:

Quando usamos uma função com retorno, temos que pegar esse retorno e guardar em uma variável.

    calculaImc(altura, peso); // aqui a função está retornando o imc mas a gente n ta pegando ele!

Pra guardar o valor retornado basta a gente colocar ele em uma variável, algo como:

var imc = calculaImc(altura, peso);

agora, toda vez que você usar a variavel imc, ela vai ter dentro dela o valor que a gente calculou com a função =)

Espero ter ajudado!

Abraço e bons estudos!

Mesmo com essa alteração ele ainda me devolve o peso, não consigo entender porque ele me devolve o peso. mudei o peso e a altura de ordem e agora ele me devolve números aleatórios quebrados. não estou entendendo o porque dessa alteração

<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 peso = parseInt(prompt("Digite seu peso."));
    var altura = parseInt(prompt("Digite sua altura."));

     var imc = calculaImc(peso, altura);

    if (imc < 18.5)
    {
        mostra("seu IMC de " + imc + " indica que vc está abaixo do peso");
    }
    if (imc > 35 )
    {
        mostra("seu IMC de " + imc + " indica que vc está acima do peso ideal");
    }

    if (imc >= 18.5 && imc <= 35)

    {
        mostra("OK!, seu IMC de " + imc + " indica que vc está entre os 2 limites!")
    }

</script>

Johabe, então, eu testei seu código e ele funcionou perfeitamente aqui, que estranho.

Quando vc fez as alterações vc recarregou a página para que elas fossem aplicadas?

Tem certeza que esta correto? e ele não dá a resposta o peso que vc digitou ? tente mais uma vez reparando nisso por favor. testei em outros 2 computadores e deu esse erro.

Olá meu aluno, o problema agora é que você esta passando os valores trocados na sua função. Sua função espera receber altura e peso, mas você esta passando peso e altura. Seu cálculo do IMC ficara bem doidinho.

Só fazer essa correção. Sucesso e bom estudo!

O Flávio tem razão, a conta estava ficando estranha,todavia ele fazia sim a divisão, o valor que retornava não era o peso apenas, mas um número decimal.

Vou colar o código inteiro que tenho aqui, olha só.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>testaIMC</title>
</head>
<body>

<h1>Testando IMC </h1>
<script>
    function pulaLinha() 
    {
        document.write("<br>");
    }

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

    function calculaImc(altura, peso)
    {
          return peso / ( altura * altura );

    }

    var peso = parseInt(prompt("Digite seu peso."));
    var altura = parseInt(prompt("Digite sua altura."));

    var imc = calculaImc(peso, altura);

    if (imc < 18.5)
    {
        mostra("seu IMC de " + imc + " indica que vc está abaixo do peso");
    }
    if (imc > 35 )
    {
        mostra("seu IMC de " + imc + " indica que vc está acima do peso ideal");
    }

    if (imc >= 18.5 && imc <= 35)

    {
        mostra("OK!, seu IMC de " + imc + " indica que vc está entre os 2 limites!")
    }

</script>
</body>
</html>

Abração!

solução!

Boa noite. Depois de muito tempo consegui descobrir o que estava causando o erro. era o comando parseInt() que ao colocar com o comandoprompt() para altura excluía a casa decimal fazendo que na maioria das vezes ele multiplicasse o peso por "1" me fazendo acreditar que o programa só repetia o que era colocado em peso.

O Programa final e corrigido ficou assim.

<meta charset="UTF-8">

<script>


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

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

    function calculaImc(peso, altura)
    {
          return peso / ( altura * altura );

    }


    var peso = parseInt(prompt("Digite seu peso."));
    var altura = prompt("Digite sua altura.");



     var imc = calculaImc(peso, altura);

    if (imc < 18.5)
    {
        mostra("seu IMC de " + imc + " indica que vc está abaixo do peso");
    }
    if (imc > 35 )
    {
        mostra("seu IMC de " + imc + " indica que vc está acima do peso ideal");
    }

    if (imc >= 18.5 && imc <= 35)

    {
        mostra("OK!, seu IMC de " + imc + " indica que vc está entre os 2 limites!")
    }

</script>

agora sei que parseInt()não funciona com casas decimais. muito obrigado pela ajuda.

Use parseFloat que resolve.