Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] O if else não está trazendo a informação correta

Oi pessoal! Sou novata no JS e estou fazendo uma calculadora de IMC. O código é simples mas mesmo assim o if e else não estão trazendo a informação correta. :( Código:

var nome = ['Karine', 'Gabriel', 'Lucia', 'Allan']; var peso = [70, 100, 62, 83]; var altura = [1.65, 1.78, 1.53, 1.85];

function imc(n1, n2){ const massaCorpo = (kg / (alt * alt)) const total = massaCorpo.toFixed(); return total; }

function resultado(imc){

if (imc <= 25) {
    return 'Peso ideal' 
}
else {
    return 'Acima do peso'
}

}

for(var index in nome){ var kg = peso[index]; var alt = altura[index];

console.log(nome[index] + ' - ' + kg + ' - ' + alt + ' - IMC: ' + imc() + ' - ' + resultado());

}

Resultado no console:

Karine - 70 - 1.65 - IMC: 26 - Acima do peso script.js:59 Gabriel - 100 - 1.78 - IMC: 32 - Acima do peso script.js:59 Lucia - 62 - 1.53 - IMC: 26 - Acima do peso script.js:59 Allan - 83 - 1.85 - IMC: 24 - Acima do peso

1 resposta
solução!

Oi Karine, tudo bem com você?

O que percebi aqui é que você criou funções que recebem parâmetros, mas no momento de invocar essas funções você não passou esses parâmetros. O cálculo de imc está funcionando mesmo sem passar parâmetros porque as variáveis de kg e alt são globais, mas como você está passando parâmetros nessa função, seria legal adicionar. Já na função de resultado, como ela espera o cálculo de imc como parâmetro e você não passou nada e não há nenhuma variável global imc declarada, o resultado não é calculado corretamente. Por isso uma solução possível é passar o valor de kg e alt como parâmetros de imc() e na chamada de resultado(), passar o imc como parâmetro. Algo assim:

var nome = ['Karine', 'Gabriel', 'Lucia', 'Allan'];
var peso = [70, 100, 62, 83];
var altura = [1.65, 1.78, 1.53, 1.85];

function imc(kg, alt){
    kg = kg;
    alt = alt;
    const massaCorpo = (kg / (alt * alt))
    const total = massaCorpo.toFixed();
    return total;
}

function resultado(imc){

    if (imc <= 25) {
        return 'Peso ideal' 
    }
    else {
        return 'Acima do peso'
    }
}

for(var index in nome){
    var kg = peso[index];
    var alt = altura[index];

    console.log(nome[index] + ' - ' + kg + ' - ' + alt + ' - IMC: ' + imc(kg, alt) + ' - ' + resultado(imc(kg, alt)));
}

Espero muito que tenha solucionado sua questão.

Fique à vontade para perguntar caso ainda tenha alguma dúvida.

Um abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!