Uma loja virtual oferece trete com descontos proporcionals ao valor da compra, de acordo com a seguinte tabela:
Valor da compra
desconto
Até
Sem desconto
Acima de
e até
de desconto
Acima de
e até
de desconto
Acima de
Frete grátis
O valor padrão do frete é de
.
Implemente um programa que receba como entrada o valor da compra (um número real), calcule e imprima o valor do frete e o valor total da compra, ambos com duas casas decimais.
Sua resposta deve conter as mensagens exatamente como definidas nos exemplos de execução.
| Valor da compra | desconto |
| Até
|
Sem desconto |
| Acima de
|
|
| Acima de
|
|
| Acima de
|
Frete grátis |
Implemente um programa que receba como entrada o valor da compra (um número real), calcule e imprima o valor do frete e o valor total da compra, ambos com duas casas decimais.
Passo 1
O enunciado pede que a gente escreva um programa que receba como entrada o valor da compra (um número real) e imprima duas coisas: o valor do frete e o valor total da compra, ambos com duas casas decimais. As informações importantes dadas são:
- O valor padrão do frete é
. - A tabela de descontos sobre o frete (peguei os limites do enunciado):
- Para compras até
: sem desconto. - Para compras acima de
e até : de desconto no frete. - Para compras acima de
e até : de desconto no frete. - Para compras acima de
: frete grátis.
- Para compras até
- O programa deve ler um único número real (o valor da compra) e mostrar duas linhas com os valores formatados com duas casas decimais. As mensagens devem seguir exatamente o formato dos exemplos (veremos um formato claro nas próximas etapas).
Passo 2
Vamos definir as variáveis que usaremos e o que cada uma representa:
- Seja
o valor da compra lido como entrada (um número real). - Seja
o frete padrão, isto é . - Seja
a taxa de desconto aplicada ao frete (como número decimal, por exemplo ). - Seja
o valor final do frete depois de aplicar o desconto. - Seja
o valor total pago pelo cliente, ou seja .
Essas definições ajudam a transformar o enunciado em fórmulas simples.
Passo 3
Como calcular
(o frete final)? A regra geral é:
- Se houver desconto percentual
, o frete final é
- Se houver frete grátis,
.
Explicando percentuais: para transformar um percentual em decimal usamos
dividir por
. Por exemplo
e
. Aplicando na fórmula do frete:
- Para
de desconto: . - Para
de desconto: . - Sem desconto:
. - Frete grátis:
.
Passo 4
Como calcular o total
:
ou seja, soma simples do valor da compra com o frete já ajustado. No programa: primeiro determinar
de acordo com
, depois calcular
usando a soma acima.
Passo 5
Regras de comparação nos limites (para implementar corretamente as condições):
- "Até
" significa . - "Acima de
e até " significa . - "Acima de
e até " significa . - "Acima de
" significa .
Esses detalhes garantem que cada valor de
caia exatamente numa única faixa.
Passo 6
Formato de saída: o enunciado pede que imprima o valor do frete e o valor total, ambos com duas casas decimais, e que as mensagens sejam exatamente como nos exemplos. Um formato claro e comum é:
- Primeira linha: “Frete: R$ X.YY”
- Segunda linha: “Total: R$ Z.WW”
ondee são números com duas casas decimais (usar ponto decimal na saída típica de programas). No código abaixo eu sigo exatamente esse formato de mensagem.
Passo 7
Estratégia de implementação (passo a passo que você vai traduzir em código):
- Ler
(valor da compra) como número real. - Inicializar
. - Testar em ordem as faixas:
- Se
então . - Senão se
então . - Senão se
então . - Senão
.
- Se
- Calcular
. - Imprimir as duas linhas no formato pedido, formatando com duas casas decimais.
Passo 8
Dica prática para a prova: se o enunciado pede exatamente duas casas decimais, não arredonde manualmente por meio de operações complicadas — use a formatação disponível na linguagem (por exemplo, em Python usar formato ,
,
ou
, e então soma com
.
{valor:.2f}) ou em outras linguagens funções equivalentes. Se estiver calculando na cabeça, use os valores defrete que já vimos:
Resposta
p = float(input().strip().replace(’,’, ‘.’))
frete_padrao = 20.0
if p <= 100.0:
frete = frete_padrao
elif p <= 200.0:
frete = frete_padrao * (1 - 0.05)
elif p <= 300.0:
frete = frete_padrao * (1 - 0.10)
else:
frete = 0.0
total = p + frete
print(f"Frete: R$ {frete:.2f}")
print(f"Total: R$ {total:.2f}")
frete_padrao = 20.0
if p <= 100.0:
frete = frete_padrao
elif p <= 200.0:
frete = frete_padrao * (1 - 0.05)
elif p <= 300.0:
frete = frete_padrao * (1 - 0.10)
else:
frete = 0.0
total = p + frete
print(f"Frete: R$ {frete:.2f}")
print(f"Total: R$ {total:.2f}")