Oi Fernando, boa tarde! Tudo bem?
O problema está na lógica das suas condicionais e nos valores limites. vamos analisar por partes.
let porcentagemDesconto = 0;
// Aqui ele está aplicando 10% de desconto se as milhas forem maiores que 5000.
// Então, caso a quantidade seja 30.000, ele também aplicará o desconto
if (quantidadeMilhas > 5000) {
porcentagemDesconto = porcentagemDesconto + 10;
}
// Aqui ele aplica mais 20% se for maior ou igual a 30.000.
// Porém, o desconto anterior de 10% pode ter sido aplicado antes, somando com este.
// Isso resulta em 30% de desconto para 30.000 milhas (Não é o que queremos)!
if (quantidadeMilhas >= 30000) {
porcentagemDesconto = porcentagemDesconto + 20;
} else {
// Este else sempre será executado quando as milhas forem menores que 30.000.
// Isso faz com que milhas entre 5.001 e 29.999 recebam 0% de desconto,
// mesmo que a primeira condição tenha sido verdadeira.
porcentagemDesconto = 0;
}
O código corrigido:
let quantidadeMilhas = 5000;
let porcentagemDesconto = 0;
// Aqui, primeiro validamos se o valor é maior que 30.000. Caso sim, aplica o desconto de 20%.
if(quantidadeMilhas > 30000) {
porcentagemDesconto = porcentagemDesconto + 20;
// Se a primeira condição não for verdadeira, essa é avaliada.
// Aqui validamos se o valor está entre 5.001 e 30.000.
} else if (quantidadeMilhas > 5000) {
porcentagemDesconto = porcentagemDesconto + 10;
} else {
// Caso nenhuma das condições anteriores seja atendida, aplica-se 0% de desconto.
porcentagemDesconto = 0;
}
console.log(porcentagemDesconto);
Lembre-se: o código é executado linha por linha, e a ordem das condicionais altera completamente o resultado!
Dica: sempre use o console.log() para validar e achar erros (o famoso debugar haha). Aqui você poderia aplicar dentro de um if para verificar se o código está passando ou não pela condicional. Por exemplo:
if(condição) {
// lógica caso a condição seja favorável
console.log('passei pela condição!!');
} else {
// lógica caso não cumpra a condição
console.log('não passei :(');
}