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

Olá pessoal, estou com a seguinte dúvida:

"Caso eu informe a instrução parseInt na variável alturaInformada e na pesoInformado o programa não funciona e exibe somente o último valor informado, neste caso o peso, caso eu não coloque essa instrução o sistema calcula corretamente. Alguém pode me ajudar?

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

<meta charset="utf-8">

<script>

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

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

    function calculaImc(altura , peso) {
        return peso / Math.pow(altura ,  2);
    }

    var nome = prompt("Informe seu nome");
    var alturaInformada = prompt(nome + ", por favor informe sua altura");
    var pesoInformado = prompt("Agora " + nome + ", informe o seu peso");
    var imc = calculaImc(alturaInformada, pesoInformado);

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

    if (imc < 18.5) {
        mostra("Seu IMC está abaixo do recomendado - Abaixo do Peso");
    }
    if (imc > 18.5 && imc < 24.9) {
        mostra("Seu IMC está dentro do recomendado - Peso Normal");
    }
    if (imc > 24.9 && imc < 29.9) {
        mostra("Seu IMC está acima do recomendado - Sobrepeso");
    }
    if (imc > 29.9 && imc < 34.9) {
        mostra("Seu IMC está acima do recomendado - Obesidade grau I");
    }
    if (imc > 34.9 && imc < 39.9) {
        mostra("Seu IMC está acima do recomendado - Obesidade grau II");
    }
    if (imc > 39.9) {
        mostra("Seu IMC está acima do recomendado - Obesidade grau III");
    }
</script>
4 respostas

Hephaestus, essas informações não são inteiros, por isso não é o ideal usar parseInt(). Tente usar o parseFloat(), que serve para números com ponto flutuante (ex.: 85.2 kg, 1,79 m).

Faz um teste e dá um retorno.

Abraço.

Hephaestus, como o Manoel informou, nesse caso o ideal seria usar o parseFloat().

Acredito que quando você usou o parseInt() ele transformou a altura em inteiro, arredondando para (provavelmente) 1. Então aconteceu o seguinte, por exemplo :

Altura  digitada foi  1.72 (arredondou para 1)
Peso digitado foi 70

1² = 1
70 / 1 = 70

Por isso ele retornava o valor do peso.

Opa! Minha mensagem foi duplicada. Alterei aqui :)

solução!

Hep, não sei onde você esta no curso, mas o parseFloat será apresentado para você no capítulo 7.

https://cursos.alura.com.br/course/logica-programacao-javascript-html/task/17749

Sucesso e bom estudo!