MC102 - Algoritmos e Programação de Computadores
MC102 Horários Plano de
desenvolvimento
Oferecimento
anterior

Pagamento com atraso

Todos sabem que é melhor pagar as faturas em dia. No entanto, vários fatores, incluindo a inexperiência com este tipo de responsabilidade, podem levar ao atraso e aos terríveis encargos.

Nesta tarefa, ao calcular multas e juros, você irá utilizar o tipo float para representar valores monetários, aprenderá conceitos básicos sobre aritmética com ponto flutuante e também sobre formatação de escrita.

Trabalhando com floats

Operações básicas Antes de escrever seu programa, vamos fazer alguns testes com a linha de comando. Abra um terminal e o programa python3:

$ python3
Python 3.7.1 
Type "help", "copyright", "credits" or "license" for more information.
>>>  

Atribua um número real para a variável valor e escreva algumas operações:

>>> valor = 99.99
>>> multa = valor * 0.02    
>>> juros = valor * 0.00033
>>> print(multa)
1.9998
>>> print(juros)
0.0329967

Formatação Note que os valores foram exibidos com mais casas decimais do que as duas usuais para valores monetários. Podemos formatar o número de casas na saída por meio do comando format():

>>> format(juros, '.2f')
>>> '0.03'    
>>> print("R$", format(juros, '.2f'))
R$ 0.03  

Abaixo temos duas outras maneiras de se obter esta saída. Para entender melhor o funcionamento destes comandos leia a página Formatação em Python.

>>> "{:.2f}".format(juros)
'0.03'
    
>>> "%.2f" % juros  # estilo antigo - pode não funcionar nas próximas versões de Python 
'0.03'

Limitações A exibição de um maior número de casas pode revelar resultados surpreendentes. Observe os valores 0.1 e 0.5 com 30 casas decimais:

>> format(0.1, '.30f')
'0.100000000000000005551115123126'
>>> format(0.5, '.30f')
'0.500000000000000000000000000000'

Para entender a razão destes resultados, veja a seção 15. Floating Point Arithmetic: Issues and Limitations da documentação de Python 3.

Descrição da entrada

A entrada do seu programa será composta por duas linhas, a primeira contendo um float representando o valor da fatura e a segunda um int representando o número de dias em atraso.

99.99
3

Dica: você poderá ler este par de valores com os comandos:

valor = float(input())
dias_atraso = int(input())

Descrição da saída

A saída deverá apresentar na sequência os seguintes valores em reais:

Para a entrada da seção anterior, a saída será:

Valor: R$ 99.99
Multa: R$ 2.00
Juros: R$ 0.10
Valor total: R$ 102.09

Testes com o SuSy

No SuSy, como você já sabe, para cada tarefa, criamos um conjunto de testes com arquivos de entrada arq<i>.in e para cada um deles temos uma saída esperada arq<i>.res. Para esta tarefa, os testes abertos serão os listados na tabela abaixo. Haverá também um teste fechado.

Entrada Saída
arq1.in 99.99
1
Valor: R$ 99.99
Multa: R$ 2.00
Juros: R$ 0.03
Valor total: R$ 102.02
arq1.res
arq2.in 99.99
5
Valor: R$ 99.99
Multa: R$ 2.00
Juros: R$ 0.16
Valor total: R$ 102.15
arq2.res
arq3.in 100
1
Valor: R$ 100.00
Multa: R$ 2.00
Juros: R$ 0.03
Valor total: R$ 102.03
arq3.res
arq4.in 0
2
Valor: R$ 0.00
Multa: R$ 0.00
Juros: R$ 0.00
Valor total: R$ 0.00
arq4.res
arq5.in 100345.55
30
Valor: R$ 100345.55
Multa: R$ 2006.91
Juros: R$ 993.42
Valor total: R$ 103345.88
arq5.res

Releia, se necessário as instruções para fazer os testes em Testes com o SuSy.

Orientações para submissão

Veja aqui a página de submissão da tarefa. O arquivo a ser submetido deve se chamar lab02.py. No link Arquivos auxiliares há um arquivo aux02.zip que contém todos os arquivos de testes abertos, seus respectivos resultados compactados e scripts para facilitar os testes.

Utilize o sistema SuSy com o mesmo login e senha que você utiliza para fazer acesso ao sistema da DAC (entregues no dia da sua matrícula). Se você não estiver inscrito corretamente, envie email para .

O limite máximo será de 15 submissões. Serão considerados os resultados da última submissão.

O peso desta tarefa é 1.

O prazo final para submissão é 07/04/2019.


A imagem que ilustra esta tarefa foi obtida em Clipartmax.