Olá Felipe! Tudo bem?
Analisando os prints que você compartilhou, posso dizer que vou seguiu uma boa linha de raciocínio, calcular o IMC e interagir com o usuário. Vamos agora aprimorar a lógica de condições para classificar o IMC.
Para começar, é importante notar que você está usando parseInt
para converter o resultado do IMC em um número inteiro. Isso pode não ser ideal, pois o IMC é geralmente expresso com casas decimais para maior precisão. Em vez disso, você pode usar parseFloat
ou simplesmente manter o valor como um número de ponto flutuante (float).
Agora, em relação à lógica de condições, é melhor usar uma estrutura de if...else if...else
para cobrir todos os possíveis intervalos de IMC sem sobreposição. Aqui está um exemplo de como você pode fazer isso:
function calcularImc(peso, altura) {
return peso / (altura * altura);
}
let nome = prompt('Digite seu nome');
let peso = prompt('Digite seu peso');
let altura = prompt('Digite sua altura');
function exibirMensagem(mensagem) {
document.write(mensagem + '<br>');
}
let imc = calcularImc(peso, altura);
exibirMensagem('Olá ' + nome + ', seu IMC é ' + imc.toFixed(2));
if (imc < 18.5) {
exibirMensagem('Seu IMC é baixo');
} else if (imc >= 18.5 && imc < 25) {
exibirMensagem('Seu IMC está na média correta');
} else if (imc >= 25 && imc < 30) {
exibirMensagem('Seu IMC indica sobrepeso');
} else {
exibirMensagem('Seu IMC indica obesidade');
}
Note que usei imc.toFixed(2)
para exibir o IMC com duas casas decimais. Além disso, as condições agora cobrem todos os intervalos sem sobreposição e incluem mensagens para cada faixa de IMC.
Espero que essas dicas te ajudem a aprimorar seu código! Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.