3
respostas

A atividade está incoerente

Permita-me opinar, antecipadamente me desculpe se minha análise estiver errada, mas há incoerência na atividade e de acordo com os comentários do forum já deveria ter sido revisada.

Regras de negócio: 2. < 5000 não recebem desconto 3. >= 30000 recebem 20% 4. >5000 <30000 recebem 10%

Posteriormente apresentam o novo Bug " clientes, ao tentar utilizar o desconto referente a 5.000 milhas, não ocorre nenhum desconto". Está condição não está descrita nas regras de negócio do cliente.

Portanto, não há resposta correta para a atividade.


**Estou no ínicio de aprendizado da linguagem, mas acredito que o código opere em loop, portanto a variável porcentagemDesconto será zerada ciclicamente. ** Entendo que código adequado seria:

let porcentagemDesconto = 0;

if(quantidadeMilhas >= 5000 && <30000 ){ porcentagemDesconto = 10; }

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

3 respostas

Boa tarde, Humberto!

Para entender o problema, vamos analisar as regras de negócio e o código passo a passo:

Regras de Negócio:

Menos de 5.000 milhas: Sem desconto. Entre 5.000 e 29.999 milhas: 10% de desconto. 30.000 milhas ou mais: 20% de desconto.

Análise do Código: O problema está na ordem das condições if. A condição if(quantidadeMilhas >= 30000) está sendo verificada antes da condição para o intervalo de 5.000 a 30.000 milhas. Isso significa que, se um cliente tiver, por exemplo, 10.000 milhas, a primeira condição será verdadeira e o desconto de 20% será aplicado, ignorando a condição correta de 10%.

Solução: Para corrigir esse problema, precisamos reordenar as condições if para que a condição mais específica seja verificada primeiro. Além disso, devemos utilizar o else if para evitar que múltiplas condições sejam verdadeiras ao mesmo tempo.

Explicação da Solução:

Verificação da condição mais específica: A condição if(quantidadeMilhas >= 30000) é verificada primeiro. Se for verdadeira, o desconto de 20% é aplicado e o código para por aí.

Verificação da próxima condição: Se a primeira condição for falsa, o else if verifica se a quantidade de milhas está entre 5.000 e 29.999. Se for verdadeira, o desconto de 10% é aplicado.

Condição padrão: Se nenhuma das condições anteriores for verdadeira, o desconto é zero.

João,

Você explicou corretamente, mas dentro das respostas não existe uma que satisfaça a condição quando o cliente tem 5000 milhas, que no meu entender foi o Humberto colocou.

Para mim o código correto seria:

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

Pode corrigir se estiver errado.

Exato, Giovana.

Agora que avancei um pouco mais no curso, diria que o código correto é:

let porcentagemDesconto = 0; let quantidadeMilhas = prompt('digite a quantidade de milhas');

if (quantidadeMilhas >= 30000) { porcentagemDesconto = 20 } else { if (quantidadeMilhas >= 5000 && quantidadeMilhas < 30000) { porcentagemDesconto = 10 } else (porcentagemDesconto = 0) }

alert(Porcentagem de desconto de ${porcentagemDesconto} %);