1
resposta

[Dúvida] A resposta será binária?

Não testei o código, mas olhando as condições parece-me haver apenas duas respostas: Ou a pessoa não terá o desconto ou o desconto será de 10. Acredito que seja dessa forma porque o algoritmo ao será analisado linha a linha, ao testar uma quantidade de milhas maior que 5000 sempre irá parar na linha em que testa a quantidade de milhas maior que 5000, ou seja, se eu tiver 80000(oitenta mil) milhas e rodar o algoritmo, terei como resultado porcentagemDesconto = porcentagemDesconto + 10; porque 80000 é maior que 5000.

Então creio que nunca chegará a ler a condição if(quantidadeMilhas >= 30000){ porcentagemDesconto = porcentagemDesconto + 20;

caso as milhas seja inferior a 5000 cairá na condição: else { porcentagemDesconto = 0;

é isso mesmo?

1 resposta

Você está certo na primeira parte, referente aos que possuírem 5k ou mais de milhas não receberão, por que a condição "else", diz que se for menor que 30k, a variável terá valor 0.

Porém, o que acontece é que quando a condição de 30k ou mais milhas for verdadeira, a primeira também será, ou seja, quem tem 30k + de milhas, receberá 30% de desconto.

A solução seria inverter a lógica, checando se há 30k ou mais milhas na conta da pessoa, e se for verdadeira, adicionar 20% de desconto. E depois um "else", que acionará assim que o for identificado que a primeira condição era falsa (ou seja, menor que 30k de milhas). dentro do "else" terá um "if", que vai checar se a quantidade pelo menos é maior que 5k, e aplicará o desconto, mas se nenhuma das condições forem verdadeiras, nada vai ser executado, e o sujeito continua sem descontos coitado.