2
respostas

[Sugestão] Calculo do IMC

Estaria de acordo esse calculo do IMC?

function calculaIMC(peso, altura) {
    
    return peso / Math.pow(altura, 2);
}

const resultadoIMC = calculaIMC(150, 1.50);

function classificarIMC(imc) {
    if (imc < 18.5) {
        return "ABAIXO DO PESO";
    } else if (imc >= 18.5 && imc < 25) {
        return "PESO NORMAL";
    } else if (imc >= 25 && imc < 30) {
        return "SOBREPESO";
    } else if (imc >= 30 && imc < 35) {
        return "OBESIDADE GRAU 1";
    } else if (imc >= 35 && imc < 40) {
        return "OBESIDADE GRAU 2";
    } else {
        return "OBESIDADE GRAU 3";
    }
}

console.log("Seu IMC é:", resultadoIMC.toFixed(2));
console.log("Classificação:", classificarIMC(resultadoIMC));
2 respostas

Ou teria algo que eu poderia melhorar ou ate mesmo mudar.

Oi, Levi! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Sua solução ficou bem organizada: você separou o cálculo em calculaIMC(peso, altura) e a regra de negócio em classificarIMC(imc), além de usar toFixed(2) para exibir um resultado mais legível. Uma dica interessante para o futuro é validar os dados de entrada (evita altura igual a 0, valores negativos ou não numéricos) e aproveitar o operador ** no lugar de Math.pow. Veja este exemplo:


function calculaImc(peso, altura) {
  if (!Number.isFinite(peso) || !Number.isFinite(altura) || peso <= 0 || altura <= 0) {
    return null;
  }
  return peso / (altura ** 2);
}

const imc = calculaImc(150, 1.5);
console.log(imc === null ? "Dados invalidos" : imc.toFixed(2));

Esse código calcula o IMC e, se os valores forem inválidos, retorna null para você tratar a mensagem no console.log.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!