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

A lógica está correta mesmo?

Pessoal, Tudo bem?

Estava tentando entender o motivo da alternativa "D" ser a correta, mas no meu entendimento do código, a condição só será executada quando o valor da variável quantidadeMilhas for igual ou superior a 30.000, ou seja, o else existente dentro da condição nunca será executado porque seu valor é inferior a primeira condição.

let porcentagemDesconto = 0;

if(quantidadeMilhas >= 30000){
    porcentagemDesconto = porcentagemDesconto + 20;
} else {
    if(quantidadeMilhas > 5000){
    porcentagemDesconto = porcentagemDesconto + 10;
}

}

Exemplo:

quantidadeMilhas = 32.000 --> true para a primeira condição e define a porcentagem para 20 e sai. quantidadeMilhas = 4.000 --> false para a primeira condição e sai quantidadeMilhas = 6.000 --> false para a primeira condição e sai

Ou seja, o else nunca será acionado dentro do if.

Minha proposta de código é essa:

let porcentagemDesconto = 0;

if(quantidadeMilhas > 5000) {
    if(quantidadeMilhas >= 30000) {
        porcentagemDesconto = porcentagemDesconto + 20;
    }
    porcentagemDesconto = porcentagemDesconto + 10;
}

Utilizando os mesmos valores das variáveis do exemplo acima, é possível configurar as variáveis porcentagemDesconto conforme a definição da regra de negócio.

OBS: Caso o valor da variável quantidadeMilhas for exatamente 5000, resultará false e a variável porcentagemDesconto continuará com o valor igual a 0. Seria interessante mudar a condição alterando o sinal > para >=

Aguardo um retorno para validar se meu entendimento e proposta estão corretos.

1 resposta
solução!

Voce entendeu errado a utilização do if e else, o else só será executado se o if for False, ou seja se quantidadeMilhas não for maior ou igual a 30000, ou seja se quantidadeMilhas for menor que 30000, o else vai entrar em ação, e vai ter uma nova condição, se a pessoa tiver quantidadeMilhas maior que 5000 ela receberá o desconto de 10%, caso quantidadeMilhas seja inferior que 5000, ela não receberá nenhum desconto.

O que você fez não está correto pois ela vai ter 30% de desconto, já que as duas condições vão ser True, vai ganhar 10% da primeira condição, e 20% da segunda condição, você pode testar no seu vscode por exemplo, coloque os dois codigos e peça para imprimir o retorno. O código que você propôs aplicaria 10% de desconto para qualquer valor maior que 5000, e, se o valor for maior ou igual a 30000, adicionaria mais 20%.