MC102 - Algoritmos e Programação de Computadores
MC102 Horários Plano de
desenvolvimento
Cronograma Oferecimentos
anteriores

Atraso e renegociação

Todos sabem que é melhor pagar as faturas em dia. No entanto, vários fatores, incluindo crises globais, podem levar ao atraso e aos terríveis encargos. Nestes casos, é sempre bom não entrar em pânico e procurar mecanismos para renegociação, visto que vários credores aceitam o parcelamento da dívida mediante o pagamento de um valor mínimo.

Nesta tarefa, ao manipular valores monetários, você irá utilizar o tipo float e 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.6
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á ser apresentada como descrito a seguir, com strings sem acentos:

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
Valor minimo para renegociacao: R$ 10.20

Note que todos os valores da saída devem ser expressos com duas casas decimais. Utilize a formatação como sugerido acima.

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.

Observe a tabela a abaixo e fique atento(a) aos arredondamentos:

Entrada Saída
arq01.in 100.00
1
Valor: R$ 100.00
Multa: R$ 2.00
Juros: R$ 0.03
Valor total: R$ 102.03
Valor minimo para renegociacao: R$ 10.20
arq01.res
arq02.in 99.99
1
Valor: R$ 99.99
Multa: R$ 2.00
Juros: R$ 0.03
Valor total: R$ 102.02
Valor minimo para renegociacao: R$ 10.20
arq02.res
arq03.in 999.90
1
Valor: R$ 999.90
Multa: R$ 20.00
Juros: R$ 0.33
Valor total: R$ 1020.23
Valor minimo para renegociacao: R$ 102.02
arq03.res
arq04.in 0
2
Valor: R$ 0.00
Multa: R$ 0.00
Juros: R$ 0.00
Valor total: R$ 0.00
Valor minimo para renegociacao: R$ 0.00
arq04.res
arq05.in 10000.00
60
Valor: R$ 10000.00
Multa: R$ 200.00
Juros: R$ 198.00
Valor total: R$ 10398.00
Valor minimo para renegociacao: R$ 1039.80
arq05.res

Leia 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 e seus respectivos resultados compactados.

Utilize o sistema SuSy com o mesmo login e senha que você utiliza para fazer acesso ao sistema da DAC. Se você não estiver inscrito corretamente, envie email para .

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

O peso desta tarefa é 1.

O prazo final para submissão é 03/05/2020.


A imagem que ilustra esta tarefa foi obtida em Clipartmax.