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

Dou-lhe uma, dou-lhe duas...

Nesta tarefa, vamos implementar um simulador de leilões. O seu programa fará o papel do leiloeiro, anunciando o valor mínimo e acompanhando os lances. Em caso de pausa, seu programa deverá indicar qual é a maior oferta até o momento e incentivar novos lances. Ao final, deverá revelar quem venceu o leilão e por qual valor.

Ofertas menores do que o lance mínimo ou menores do que a maior oferta até o momento serão ignoradas pelo leiloeiro. Desta forma, se um cliente propuser um valor, uma outra oferta dele com valor mais baixo não terá efeito. Uma oferta com valor igual ao do maior lance até o momento também será ignorada pelo leiloeiro.

Descrição da entrada

A entrada do seu programa será composta pelo lance mínimo seguido por pares de linhas indicando nome do participante e valor da oferta. Eventualmente, aparecerá a palavra PAUSA. Ao término da simulação, aparecerá a palavra FIM. Observe a sequência abaixo:

<lance_minimo>
<nome_cliente1>
<oferta_cliente1>
<nome_cliente2>
<oferta_cliente2>
...    
PAUSA
<nome_clientek>
<oferta_clientek>
...
FIM

Os arquivos de entrada devem respeitar as seguintes restrições:

Descrição da saída

A primeira linha da saída será o anúncio do lance mínimo na forma:

Lance minimo: R$ <lance_minimo>.

Ao ler a palavra PAUSA na entrada:

Ao ler a palavra FIM na entrada, o seu programa deverá emitir a mensagem tradicional:

Dou-lhe uma, dou-lhe duas, dou-lhe tres!

Reveja, se necessário, as dicas de Formatação em Python.

Exemplo

Veja o exemplo de entrada/saída abaixo. Algumas linhas em branco foram inseridas para facilitar a visualização do comportamento do programa ao longo do tempo.

Entrada Saída
50.00

Paulo
100.00
PAUSA

Marina
110.00
PAUSA

FIM

Lance minimo: R$ 50.00.



Maior oferta ate agora: R$ 100.00. Alguem oferece mais?



Maior oferta ate agora: R$ 110.00. Alguem oferece mais?

Dou-lhe uma, dou-lhe duas, dou-lhe tres!
Vendido para Marina por R$ 110.00!

Devo usar listas?

Esta tarefa foi projetada para ser resolvida sem a utilização de estruturas mais avançadas como listas e tuplas. Apenas o nome do cliente que fez a maior oferta e o valor desta oferta precisam ser armazenados ao longo da execução do programa.

Se você quiser, pode armazenar os lances lidos em uma lista e pode usar tuplas para os pares (<nome_cliente>, <oferta_cliente>), mas deve estar ciente que seu programa precisará de mais memória e executará mais operações do que a versão citada acima.

Testes com o SuSy

Como sempre, 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. Consulte os arquivos para ver os dados dos testes abertos. Note a variação entre os testes: alguns não contêm a palavra PAUSA, outros contêm as ofertas fora de ordem e outros não contêm lances acima do mínimo. Teremos oito testes abertos e dois testes fechados.

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 lab06.py. No link Arquivos auxiliares há um arquivo aux06.zip que contém todos os arquivos de testes abertos, seus respectivos resultados compactados e scripts para facilitar os testes.

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

O peso desta tarefa é 3.

O prazo final para submissão é 28/04/2019. Sugerimos que esta tarefa seja realizada antes da Prova 1.

A nota desta tarefa é proporcional ao número de testes que executaram corretamente, desde que o código esteja coerente com o enunciado. A submissão de um código que não implementa o algoritmo requisitado, mas que exibe as saídas esperadas dos testes abertos a partir da comparação de trechos da entrada será considerada fraude e acarretará a atribuição de nota zero à média final da disciplina.


A imagem que ilustra esta tarefa foi obtida em www.vendormarketing.com.au.