Para atrair e fidelizar novos clientes, uma locadora de carros elaborou uma promoção. No início do dia, o contador de cupons é zerado e cada cliente recebe um número. O primeiro cliente do dia recebe o número 1, o segundo recebe o número 2 e assim por diante. Após a devolução das chaves, o cliente digita o número do seu cupom num totem de auto-acendimento. O cliente ganhará um brinde se o seu número for múltiplo de 3 ou de 7, mas não de ambos.
Sendo assim, assinale a alternativa que satisfaz essa condição?
Alternativas
Alternativa 1:
if((cupom % 3 == 0 || cupom % 7 == 0) || (cupom % 21 == 0)){}
Alternativa 2:
if((cupom % 3 == 0 || cupom % 7 == 0) || !(cupom % 21 == 0)){}
Alternativa 3:
if((cupom % 3 == 0 || cupom % 7 == 0) && (cupom % 21 == 0)){}
Alternativa 4:
if((cupom % 3 == 0 || cupom % 7 == 0) && !(cupom % 21 == 0)){}
Alternativa 5:
if((cupom % 3 == 0 && cupom % 7 == 0) && !(cupom % 21 == 0)){}
Soluções para a tarefa
Alternativa 4, vamos agora analisar o porquê das outras alternativas estarem erradas.
Na primeira alternativa, foi colocado que só poderia ser um dos três itens, entretanto isso não pode ocorrer, ela não pode ser múltipla de 7 e 3, e no código é permitida essa opção.
Na alternativa 2, é colocado um parâmetro que fala que se não for múltiplo de 7 e 3, e diferente de múltiplo de 21 também é aceito, logo quebrando os parâmetros impostos pela empresa.
Na alternativa 3, também ocorre uma quebra com os parâmetros exigidos pela locadora, até o início do código está correto, pois só pode ser ou múltiplo de 7 e 3, mas mesmo sendo esses parâmetros ele coloca que também tem que ser múltiplo de 21, quebrando o que a locadora exige.
Na alternativa 5, são colocados que se os três parâmetros forem verdadeiros ele pode ganhar o brinde, entretanto fere a ideia da loja que apenas se for múltiplo de 7 ou 3 pode ganhar um brinde.
Espero ter ajudado!
Resposta:
Alternativa 4:
if((cupom % 3 == 0 || cupom % 7 == 0) && !(cupom % 21 == 0)){}
Explicação:
Isolando as partes:
(cupom % 3 == 0 || cupom % 7 == 0)
aqui diz que o cupom sendo dividido por 3 é igual a zero OU dividido por 7 é igual a zero
o pedaço abaixo diz que o cupom dividido por 21 é igual a zero
(cupom % 21 == 0)
ou seja, se todas as 3 condições fossem atendidas, poderíamos afirmar que o cupom é divisível pelos 3 números: 3, 7 e 21
Como a questão pede "...se o seu número for múltiplo de 3 ou de 7, mas não de ambos.", logo:
if((cupom % 3 == 0 || cupom % 7 == 0) && !(cupom % 21 == 0)){}
divisível por 3 OU divisível por 7 E divisível por 21***
|| && !
*** a expressão divisível por 21 é negada através do símbolo '!', ou seja, a afirmação é invertida, ficando que "não é divisível por 21"
Dessa forma, a alternativa é satisfeita através dessa expressão
Espero ter ajudado, e não complicado mais rsrs