Eu não entendi como chegou a essa conclusão. Alguém poderia me explicar melhor?
Eu não entendi como chegou a essa conclusão. Alguém poderia me explicar melhor?
Olá João! Tudo certo?
Sei bem que a lógica do código pode ser um pouco confusa no início, mas vamos tentar descomplicar isso juntos. A dúvida parece estar relacionada a como o código decide qual desconto aplicar com base na quantidade de milhas.
O bug no código original acontece porque ele não está aplicando corretamente as regras de desconto. Vamos analisar a solução correta, que é a opção D:
let porcentagemDesconto = 0;
if(quantidadeMilhas >= 30000){
porcentagemDesconto = porcentagemDesconto + 20;
} else {
if(quantidadeMilhas > 5000){
porcentagemDesconto = porcentagemDesconto + 10;
}
}
Aqui está o que acontece:
Primeiro if
: verificamos se a quantidade de milhas é maior ou igual a 30.000. Se for, aplicamos um desconto de 20%. Isso já resolve o problema de clientes com mais de 30.000 milhas receberem o desconto correto.
Bloco else
: se a quantidade de milhas não for maior ou igual a 30.000, verificamos se é maior que 5.000. Se for, aplicamos um desconto de 10%. Isso corrige o problema de clientes com milhas entre 5.001 e 29.999 não receberem desconto.
Por que else
: usamos o else
para garantir que, se uma condição for verdadeira (30.000 milhas ou mais), não precisamos verificar a condição seguinte (mais de 5.000 milhas), já que a primeira já foi satisfeita.
Espero que isso ajude a esclarecer como o código chega à conclusão correta sobre qual desconto aplicar.
Bons estudos!