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

Problema de NaN no codigo

Bom, estou fazendo a aplicação do comando prompt para a interação do usuário, o uso dele acaba ficando correto, porém, existe algum erro na programação que pude deixar passar. Ao informar as informações, o resultado do IMC se torna NaN. Particularmente não achei o erro no momento, quem sabe ache, mas no momento estou sem saber o que fazer e, sem avançar. Testei desde códigos do professor que são disponibilizados na plataforma mesmo, códigos de discussão no fórum e, até agora todos estão dando o mesmo problema, o NaN, estou meio sem saber se eu que estou errando, ou se há algo errado sei lá, no navegador, ou algo do gênero. Desde já, grato.

<meta chaset='UTF-8'>

<script>

function pulaLinha() {

    document.write('<br><br>');

}

function mostra(frase) {

    document.write(frase);
    pulaLinha()

}

function calculaImc(alturaInformada, pesoInformado) {

    return pesoInformado / (alturaInformada * alturaInformada);

}

var nome = prompt('Informe seu nome.');
var alturaInformada = prompt(nome + ', por favor, informe sua altura.');
var pesoInformado = prompt(nome + ', por favor, informe seu peso.');

var imc = calculaImc(alturaInformada, pesoInformado)

document.write(nome + ', seu Imc é de: ' + imc);

</script>

3 respostas
solução!

Oi Patryck, tudo bem?

Acabei de executar o seu código aqui e pra mim está funcionando normal. Veja, o seu programa pede 3 informações através do prompt: nome, altura e peso! A altura deve estar em metros (como por exemplo 1.67) e o peso em kg (como por exemplo 60). Sendo assim, ele vai passar para a função calculaImc() essa altura e peso, e a função retorna o IMC calculado.

O único problema que eu vejo é que o número não está arredondado, eu fiz um teste e retornou o valor 25.96454217209623. Nesse caso, você poderia utilizar o Math.round() para arredondar, dessa maneira:

document.write(nome + ', seu Imc é de: ' + Math.round(imc));

Você poderia me mandar uma foto da onde está retornando o IMC como NaN? Fico no aguardo!

Espero ter ajudado, qualquer outra dúvida estou a disposição, abraços e bons estudos!

Olá Giovanna, tudo bem e, com você? Refazendo o código mais algumas vezes vi que meu erro estava na digitação da altura, acabei usando a vírgula, para separar a parte inteira da parte decimal e, não um ponto, como consequência acabei ganhando um NaN. Já apliquei o Math.round assim arredondando o numero, mas obrigado, como me mandasse, já saciei uma pequena duvida de onde por ele de forma mais exata. Até sobre isso, teria alguma forma para o código identificar tanto a virgula como o ponto para separar a unidade inteira e a decimal? Não sei se é algo passado em outro momento do curso, caso seja, não existe a necessidade de responder. Muito obrigado pela ajuda!

Patrick, realmente, quando utilizamos a vírgula em vez do ponto o resultado é um NaN, isso porque o sistema internacional utilizado pelo javascript utiliza ponto para separar os valores inteiros e valores decimais, mas estamos tão acostumados com o uso da vírgula que acaba passando batido hahaha.

Não é abordado no curso uma maneira de fazer isso, mas fique tranquilo pois conforme você for adquirindo mais conhecimento no futuro vai conseguir forçar com que o usuário digite um número com ponto em vez de vírgula!

Espero ter ajudado, bons estudos!