Solucionado (ver solução)
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