Olá, Nelquin! Tudo bom?
Desculpe pela demora em obter retorno.
Parabéns pela sua resolução, a estrutura ficou bem completa. No geral o código funciona muito bem, mas possui alguns pontos onde o código ainda não responde.
No seguinte bloco de código,
if (imc < 18.5) {
alert(nomeUs + ", o seu IMC é: " + Math.round (imc) + " Você está ABAIXO do recomendado");
//mostrar("MAGREZA");
}
if (imc > 18.5 && imc <= 25) {
alert(nomeUs + ", o seu IMC é: " + Math.round (imc) + " --- Está NORMAL ---");
//mostrar("NORMAL");
}
O primeiro elemento if < 18.5
cobre todos os valores menores que 18.5, e o segundo elemento if (imc > 18.5 && imc <= 25)
cobre todos os elementos maiores que 18.5 e também menores ou iguais a 25. Mas observe que ainda falta definir qual a decisão para quando a resposta é exatamente imc = 18.5
.
Nesse caso, a solução a ser utilizada é baseada nos limites da tabela do IMC, que afirma que o valor 18.5 está incluso nesse segundo intervalo, então podemos trocar o operador >
por >=
:
if (imc < 18.5) {
alert(nomeUs + ", o seu IMC é: " + Math.round (imc) + " Você está ABAIXO do recomendado");
//mostrar("MAGREZA");
}
if (imc >= 18.5 && imc <= 25) {
alert(nomeUs + ", o seu IMC é: " + Math.round (imc) + " --- Está NORMAL ---");
//mostrar("NORMAL");
}
De forma semelhante, nos limites dos outros intervalos nós também estamos saltando alguns espaços da tabela do IMC, entre: 25 e 26, 30 e 31, e 40 e 41.
Exemplo:
if (imc >= 31 && imc <= 40)
inclui valores como: [31, 31.8, 37, 40, 39.99, 31.001 ]
if (imc >= 41)
inclui valores como: [41, 41.8, 47, 50, 49.99, 41.001 ]
Mas nesse momento, ainda não conseguimos cobrir nenhum valor no intervalo imc > 40 && imc < 41
. Devemos lembrar que o IMC é um valor real, então também podem haver valores como 40.2
. A solução é utilizar os operadores >
e <
, que tratam de todos os valores na vizinhança de um determinado número, mas não inclui o número.
Portanto a solução para cobrir todos os valores de imc
seria:
if (imc < 18.5) {
...
}
if (imc >= 18.5 && imc <= 25) {
...
}
if (imc > 25 && imc <= 30) {
...
}
if (imc > 30 && imc <= 40) {
...
}
if (imc > 40) {
...
}
Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!