Uma loja virtual oferece trete com descontos proporcionals ao valor da compra, de acordo com a seguinte tabela:
Valor da compra desconto
Até \mathrm{R} \$ 100,00 Sem desconto
Acima de \mathrm{R} \$100,00 e até \mathrm{R} \$ 200,000 5 \% de desconto
Acima de \mathrm{R} \$200,00 e até \mathrm{R} \$ 300,00 10 \% de desconto
Acima de \mathrm{R} \$ 300,00 Frete grátis
O valor padrão do frete é de \mathrm{R} \$ 20,00.
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.

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 é \mathrm{R} \$ 20{,}00.
  • A tabela de descontos sobre o frete (peguei os limites do enunciado):
    • Para compras até \mathrm{R} \$ 100{,}00: sem desconto.
    • Para compras acima de \mathrm{R} \$100{,}00 e até \mathrm{R} \$ 200{,}00: 5\% de desconto no frete.
    • Para compras acima de \mathrm{R} \$200{,}00 e até \mathrm{R} \$ 300{,}00: 10\% de desconto no frete.
    • Para compras acima de \mathrm{R} \$ 300{,}00: frete grátis.
  • 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 P o valor da compra lido como entrada (um número real).
  • Seja F_0 o frete padrão, isto é F_0=\mathrm{R} \$ 20{,}00.
  • Seja d a taxa de desconto aplicada ao frete (como número decimal, por exemplo 5\% = 0{,}05).
  • Seja F o valor final do frete depois de aplicar o desconto.
  • Seja T o valor total pago pelo cliente, ou seja T = P + F.
Essas definições ajudam a transformar o enunciado em fórmulas simples.

Passo 3

Como calcular F (o frete final)? A regra geral é:
  • Se houver desconto percentual d, o frete final é
F = F_0 \cdot (1 - d).
  • Se houver frete grátis, F=0.
Explicando percentuais: para transformar um percentual em decimal usamos \%\mapsto dividir por 100. Por exemplo 5\% = 0{,}05 e 10\% = 0{,}10. Aplicando na fórmula do frete:
  • Para 5\% de desconto: F = 20{,}00 \cdot (1 - 0{,}05) = 20{,}00 \cdot 0{,}95 = 19{,}00.
  • Para 10\% de desconto: F = 20{,}00 \cdot (1 - 0{,}10) = 20{,}00 \cdot 0{,}90 = 18{,}00.
  • Sem desconto: F = 20{,}00.
  • Frete grátis: F = 0{,}00.

Passo 4

Como calcular o total T:
T = P + F,
ou seja, soma simples do valor da compra com o frete já ajustado. No programa: primeiro determinar F de acordo com P, depois calcular T usando a soma acima.

Passo 5

Regras de comparação nos limites (para implementar corretamente as condições):
  • "Até \mathrm{R} \$ 100{,}00" significa P \le 100{,}00.
  • "Acima de \mathrm{R} \$100{,}00 e até \mathrm{R} \$ 200{,}00" significa 100{,}00 < P \le 200{,}00.
  • "Acima de \mathrm{R} \$200{,}00 e até \mathrm{R} \$ 300{,}00" significa 200{,}00 < P \le 300{,}00.
  • "Acima de \mathrm{R} \$ 300{,}00" significa P > 300{,}00.
Esses detalhes garantem que cada valor de P 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”
    onde X.YY e Z.WW 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):
  1. Ler P (valor da compra) como número real.
  2. Inicializar F_0 = 20{,}00.
  3. Testar em ordem as faixas:
    • Se P \le 100{,}00 então F = 20{,}00.
    • Senão se P \le 200{,}00 então F = 20{,}00 \cdot 0{,}95.
    • Senão se P \le 300{,}00 então F = 20{,}00 \cdot 0{,}90.
    • Senão F = 0{,}00.
  4. Calcular T = P + F.
  5. 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 {valor:.2f}) ou em outras linguagens funções equivalentes. Se estiver calculando na cabeça, use os valores defrete que já vimos: \mathrm{R} \$20{,}00, \mathrm{R} \$ 19{,}00, \mathrm{R} \$18{,}00 ou \mathrm{R} \$ 0{,}00, e então soma com P.

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}")

Exercícios relacionados