Tarefa 3 - O Leilão de Algoritmópolis

Prazo de entrega recomendado:

Nesta tarefa, vamos exercitar várias estruturas elementares em Python, como operações condicionais, comandos de repetição e diversos usos de variáveis.


Como uma excelente resolvedora de problemas, você foi a pessoa convidada para organizar o Leilão dos Colecionadores de Colecionáveis, que reúne os principais colecionadores de Algoritmópolis.

Atenção: no final da página são dadas algumas dicas de Python.

a) Muitos participantes

Como se pode imaginar, o leilão chama a atenção de muitas pessoas em toda a região, afinal, todos os produtos leiloados formam uma coleção de grande valor colecionável. Por isso, a comissão organizadora criou uma coleção de regras que determinam quais pessoas poderão participar do evento.

Uma pessoa pode participar se já for um veterano em leilões e tiver participado de pelo menos Q eventos anteriores. Também poderão participar aqueles que tiverem dado o lance vencedor pelo menos V vezes em leilões passados, mas apenas se o valor médio dos V maiores lances for pelo menos M.

Além disso, para introduzir novos participantes, a comissão organizadora convida pessoas cujo o nome começa com uma entre duas letras determinadas, variáveis a e b, que mudam em em cada edição do evento,

A sua primeira tarefa será criar um programa verificar-participacao.py que ajuda um morador de Algoritmópolis a saber se poderá participar do evento. Para este ano, presuma que Q = 3, V = 2, M = 120.45, a = 'D' e b = 'R'.

O programa deverá solicitar as informações do morador de acordo com o exemplo de execução abaixo e deverá imprimir Parabéns! Você pode se inscrever. ou Infelizmente, você não poderá participar nesse ano., dependendo se o morador puder ou não participar.

user@host:~/ra123456/tarefa03/$ python3 verificar-participacao.py
Qual o seu nome: Maria
Quantos leilões já participou antes: 4
Quantos lances você já venceu: 1
Parabéns! Você pode se inscrever.

Quando o morador tiver vencido pelo menos dois lances, o programa também deve perguntar os valores dos dois maiores lances. Lembre-se de que os lances são valores reais, com centavos separados por um ponto.

user@host:~/ra123456/tarefa03/$ python3 verificar-participacao.py
Qual o seu nome: João
Quantos leilões já participou antes: 2
Quantos lances você já venceu: 2
Lance vencedor 1: 120.00
Lance vencedor 2: 40.50
Infelizmente, você não poderá participar nesse ano.

b) Filtrando participantes

Uma vez passado o prazo de inscrição, você informará à comissão organizadora o nome de todas as pessoas que poderão participar do leilão. Para isso, você precisa criar um programa filtrar-participantes.py que receberá como entrada os dados de todos os formulários de inscrição, de acordo com a descrição abaixo.

Entrada

A primeira linha tem o formato N Q V M a b, onde N é o número de inscritos e as demais variáveis estão descritas acima. Em seguida, seguem concatenados os dados dos N inscritos. Para cada um dos inscritos, temos:

2 5 3 200.20 F K
Lélia 8 3
350.20
200.10
250.00
Carlos 4 2
178.83
280.59

Saída

A saída contém os nomes das pessoas que satisfazem os critérios da comissão organizadora, um por linha.

Lélia

c) Lances e mais lances

A parte principal de um leilão dá-se quando um produto é posto à mostra e as pessoas dão lances, sempre crescentes. Ao início, um lance mínimo é definido, de forma que o lance vencedor deve ter pelo menos este valor. Um lance é considerado válido se ele for maior ou igual ao ao lance mínimo e for maior que o melhor lance anterior. Aos final do leilão, o licitante com maior lance vence.

Você é o responsável pelo programa lances.py que coordenará o leilão. Esse programa recebe diversos comandos, cada um representado por uma letra:

Entrada

A primeira linha será sempre um comando I. Esse comando é seguido por uma linha com o codigo_produto e o lance_minimo.

Em seguida, são executados diversos comandos L ou S, sem ordem definida. Uma linha com comando L é seguida por uma linha com o nome do licitante e o valor de seu lance. Uma linha com comando S não contém parâmetros. Ao final, do arquivo, há um comando F, representando o fim do leilão.

I
1729 100.40
L
Karen 101.00
L
Pedro 102.00
S
L
Luiza 102.10
S
F

Saída

Cada comando produzirá uma saída:

Bem-vindo ao Leilão de Algoritmópolis! Produto 1729 com lance mínimo R$ 100.40
Karen deu um lance de R$ 101.00
Pedro deu um lance de R$ 102.00
Status do Leilão do Produto 1729
2 lances até agora
Pedro deu o melhor lance, de valor R$ 102.00
Luiza deu um lance de R$ 102.10
Status do Leilão do Produto 1729
3 lances até agora
Luiza deu o melhor lance, de valor R$ 102.10
Leilão finalizado com 3 lances
Luiza venceu com o lance de valor R$ 102.10

Dicas

Correção

Esta tarefa será avaliada pelo corretor automático e por um monitor, mas sem apresentação do aluno. Lembre-se de que o monitor poderá confirmar ou revisar a nota atribuída automaticamente. Atente-se para o relatório de correção da sua tarefa! Procure ler e entender o feedback dado pelo monitor e procure corrigir os problemas identificados nesta e em tarefas futuras. Se tiver dúvidas, não deixe de procurar atendimento.

A pasta da tarefa no seu repositório vem inicialmente com um arquivo nao_corrigir.txt que serve para indicar que você ainda está trabalhando nesta tarefa. Você pode realizar quantos pushes quanto forem necessários. O monitor só irá corrigir sua tarefa quando esse arquivo for removido do repositório.