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

Erro no código

Estou usando o código abaixo, mas no navegador aparece "o seu IMC é NaN". Não consegui identificar o erro. Utilizo o navegador Chrome.

<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);

mostra (nome + ", o seu IMC é " + imc);

if (imc < 18,5) {
    mostra ("Você esta abaixo do recomendado.");
}

if (imc > 35) {
    mostra ("Você esta acima do recomendado.");
}

if (imc >= 18.5 && imc <= 35) {
    mostra ("mostra Seu imc esta excelente.");
}

</script>
4 respostas
solução!

Oi Willy, tudo bem? eu vou tentar te explicar. Quando você faz o uso do prompt() e a pessoa digita um número, esse valor, embora seja um número, o programa entende como sendo um texto, string, dessa forma, você tem que usar um mecanismo para transformar esse "texto" em número. Esse NaN (acrônimo em inglês para Not a Number) aparece quando o programa está tentando usar dados que não são números para realizar operações matemáticas.

Tenta escrever assim seu comando:

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

Essa função parseInt recebe o return do prompt, string, e transforma em um número inteiro.

Espero ter ajudado, Qualquer dúvida, pode perguntar. Se não, pode encerrar o tópico, colocando minha resposta como solução.

Bons estudos. Não se preocupa, você vai conseguir.

Deu certo! Muito obrigado.

Só um adendo, lembrando que a função parseInt converte apenas para números inteiros, por exemplo de for colocar a altura 1.74 ele vai converter para 1. Então a melhor alternativa no lugar do parseInt seria a função parseFloat.

OBS: No javascript para números com casas decimais se usa ponto ao inves de virgula, porque o JS entende virgula como separador de dados).

Espero ter ajudado em algo ;)

Olá!

Eu to querendo entender, pois não precisei usar o parseInt nem parseFloat, o programa rodou normal. Copiei esse código teste e funcionou.