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

Problema com o cálculo do IMC -Dúvida

<meta charset="UTF-8">

<script>

    function pulaLinha() {

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

    function mostra(frase) {

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

    function calculaImc(altura, peso) {

        return peso / (altura * altura);
}

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

var imc = calculaImc(alturaInformada, pesoInformado);

document.write(nome + ", o seu IMC é " + imc);

</script>

O código acima está igual ao do professor, porém ele não funciona corretamente ( ao invés de aparecer o número, aparece NaN).;

**Cheguei até tentar corrigir esse problema usando :

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

E o chrome passou o valor do peso como resultado.

  • Ao perceber que também deu errado usando parseInt, esse trecho do código por :

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

E também nesse caso o chrome passou o valor do peso como resultado.

Será que o código acima está com algum detalhe faltando para funcionar corretamente a calculadora de IMC?

5 respostas

Olá, Carlos!

Copiei e o código passou corretamente.

Espero ter ajudado.

solução!

Oi oi, Carlos! Tudo bem com você?

Testei seu código por aqui e funcionou corretamente também. No entanto esse erro ocorre porque você passou o peso ou a altura com vírgula " , " no lugar de ponto " . "

NaN significa Not a Number, que em tradução livre é "Não é um número", isso acontece porque a linguagem JavaScript (assim como a maioria das linguagens) entende a quebra de números no padrão da língua inglesa, ou seja, o separador decimal é um ponto. Por outro lado, a vírgula é considerado como uma letra. Por isso ocorreu o conflito e seu programa não entendeu.

Então, quando a caixinha me pergunta qual minha altura eu devo colocar 1.58 e não 1,58 (aqui ele vai entender que tem uma palavra no meio e não vai processar corretamente)

Espero ter ajudado!

Um abraço e bons estudos!

Bom dia Carlos, copiei o código e aqui rodou normalmente.

Muito obrigado Camila! Era esse mesmo o problema! :)

Muito obrigado Camila! Era esse mesmo o problema! :)