Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

O que fiz de errado?

Queria saber o que escrevi de errado, porque ao atualizar e colocar os dados, tá saindo o peso apenas.

<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 nome = prompt("Informe o seu nome");
    var altura = parseInt(prompt(nome + ", informe sua altura"));
    var peso = parseInt(prompt(nome + ", informe seu peso"));
    var imc = calculaImc(altura, peso);    

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

    if(calculaImc >=18 && calculaImc <25) {
        mostra ("Você está excelente");
    }else{
        mostra("Você tem que ver um médico!");
        }

        mostra("FIM");



</script>
10 respostas

Olá João! Como você está usando a função parseInt() todo valor que você coloca é transformado em inteiro. Por exemplo, se você digitar 1.7 na altura o valor que vai para o cálculo do imc é 1. Com o peso acontece a mesma coisa. E, como o peso é dividido pela (altura * altura) ele acaba sempre sendo dividido por 1 e aí o imc fica sendo o próprio peso.

Neste caso você pode deixar sem a função parseInt(), pois como temos multiplicação e divisão não corre o risco de haver concatenação, ou usar a função parseFloat() que faz com que o valor seja interpretado com suas casas decimais.

Assim:

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

Testa aí e nos dê uma alô!

Abraços e sucesso nos estudos!

Obrigado, mas quando eu tiro o parseInt, ele dá not a number. E abrindo o console do javascript, ele não mostra erro nenhum. Não consigo ver o que escrevi de errado.

João, testei aqui e funcionou. Quando você retirou a função parseInt() você retirou os dois parenteses também?

Ele vai dar NaN se você inserir letras e não números na altura ou no peso. Dá uma olhada aí!

Ele ficou assim, mas continua NaN. Abri no chrome e no opera, mesma coisa. Desculpe o incômodo.

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

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

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

Botei 1,71 como altura e 75 como peso.

Testei aqui e funcionou! Uma pergunta, você está colocando os números com vírgula ou ponto? Eles devem ser colocados sempre com ponto!

Já peguei a solução, não tava dando certo por escrevia 1,71 ao invés de 1.71.

solução!

É a vírgula o problema. Coloca 1.71 e não 1,71.

Mania de calculadora. Muito obrigado