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

[Projeto] Calculando IMC

<meta charset="UTF-8">

<h3>Calculando IMC</h3>

<script>

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

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

 function calculaImc(peso, altura){
     return imc = peso / (altura * altura); //para ele poder retornar a função 
 }

var nome = prompt("Digite o seu nome!")
var peso = prompt(nome + ", digite o seu peso.");
var altura = prompt(nome + ", informe sua altura.");
var imc = calculaImc(peso, altura)

mostra(nome + " seu IMC é: " + Math.round(imc));

if(imc < 18.4){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa de insuficiência ponderal!");
}
if(imc > 18.5 && imc < 24.9){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa do normal!");
}
if(imc > 25 && imc < 29.9){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa de sobrepeso!");
}
if(imc > 30 && imc < 34.9){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa de obesidade 1!");
}
if(imc > 35 && imc < 39.9){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa de obesidade 2!");
}
if(imc >= 40){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa de obesidade 3!");
}

</script>

IResultado no browser

4 respostas

Só acrescentaria altura = altura.replace("," , ".") e peso = peso.replace("," , ".") na função calculaImc considerando que o normal no Brasil é usar a vírgula para separar casas decimais. Assim, caso alguém entre o valor com vírgula não vai gerar erro de resultado.

Italo, como ficaria? O meu deu erro.

solução!

Segue o código completo testado em https://www.w3schools.com/html/tryit.asp?filename=tryhtml_default_default

<meta charset="UTF-8">

<h3>Calculando IMC</h3>

<script>

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

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

 function calculaImc(peso, altura){

    peso = peso.replace(',','.')
    altura = altura.replace(',','.')
   /*Sem colocar as linhas acima, ao informar peso = 112,5 e altura = 1,76 o resultado é "yuri seu IMC é: NaN"
    Colocando as linhas acima e os mesmos dados, o resultado é "yuri seu IMC é: 36", 
        que é o mesmo resultado obtido ao se colocar os dados 112.5 e 1.76 respectivamente sem os replace.
    Entendo que colocando o replace você previne o código da possível entrada de dados com vírgula pelo usuário*/

    return imc = peso / (altura * altura); //para ele poder retornar a função 
 }

var nome = prompt("Digite o seu nome!")
var peso = prompt(nome + ", digite o seu peso.");
var altura = prompt(nome + ", informe sua altura.");
var imc = calculaImc(peso, altura)

mostra(nome + " seu IMC é: " + Math.round(imc));

if(imc < 18.4){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa de insuficiência ponderal!");
}
if(imc > 18.5 && imc < 24.9){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa do normal!");
}
if(imc > 25 && imc < 29.9){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa de sobrepeso!");
}
if(imc > 30 && imc < 34.9){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa de obesidade 1!");
}
if(imc > 35 && imc < 39.9){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa de obesidade 2!");
}
if(imc >= 40){
    pulaLinha();
    mostra(nome + ", seu IMC está na faixa de obesidade 3!");
}

</script>

Obrigada!