Prazo de entrega recomendado:
Você está planejando uma viagem e precisa descobrir os voos mais baratos num horizonte próximo. Para isso, deverá escolher como representar e abstrair as operações em uma coleção de voos e dados associados.
Dumont gosta muito de viajar, mas o dinheiro está curto. Por isso, ele gostaria de economizar por alguns meses. Nesse meio tempo, ele irá acompanhar as ofertas de voos e planejar a viagem. Ele não se importa para onde vai, contanto que não seja para muito longe, porque ele só terá poucos dias de férias.
Sua tarefa é construir um programa interativo que ajude Dumont a registrar todas as ofertas de voos que ele encontra diariamente e escolher o par de voos para ida e volta ideal. Entre as inúmeras possibilidades, ele irá comprar as passagens mais baratas de ida e de volta cujas datas compreendam pelo menos quatro dias dentro de seu período de férias. Enquanto Dumont sonha com suas férias, muita coisa pode acontecer, novas ofertas de voos podem aparecer, o preço de uma passagem pode mudar, o voo pode ser cancelado. Para onde ele vai viajar?
Entrada
O programa recebe uma sequência de operações. Cada operação consiste de uma linha com o nome da instrução opcionalmente seguida de uma ou mais linhas com parâmetros associados. Linhas em branco são ignoradas.
-
registrar
: registra um novo voo com os parâmetros número do voo, código de três letras dos aeroportos de origem e destino, data do voo no formatodd/mm/aaaa
e valor em reais. -
alterar
: altera o valor de um voo já registrado com parâmetros número do voo e novo valor em reais. -
cancelar
: cancela um voo já registrado com parâmetro número do voo. -
planejar
: informa os dados de Dumont e termina o programa com parâmetros código do aeroporto de saída e datas do primeiro e do último dias de férias.
Você pode supor que há no máximo 100 voos registrados e que todos os
voos ocorrem nos anos de 2021 ou 2022. Uma dica: ao ler a entrada,
aproveite o fato de que o scanf
pode ignorar espaços automaticamente
além de ler uma string em um formato adequado
Exemplo de entrada
registrar
488
XAP CGR
05/08/2021
29.87
registrar
907
CGR XAP
01/08/2021
300.43
registrar
767
CGR XAP
01/08/2021
335.37
alterar
767 324.68
cancelar
907
planejar
CGR
29/07/2021 06/08/2021
Saída
A saída deve conter duas linhas informando os voos de ida e volta conforme o exemplo.
Exemplo de saída
767
488
Critérios
É obrigatório definir e utilizar os tipos abstratos de dados
representando voo e datas. Complete o arquivo de interface de exemplo
em planejar.h
definindo as estruturas associadas e documentando as
funções. A implementação das operações dos TADs deve estar em um
arquivo planejar.c
e o programa principal deve estar em main.c
.
Você pode modificar e definir novas operações que julgar adequadas.
Por exemplo, considere criar uma operação que verifica se um par de
vôos é viável.
Correção
Esta tarefa será corrigida automaticamente sempre que você realizar um
git push
.
Esta tarefa não será corrigida por um monitor, mas vocês são incentivados a mostrar o código a um monitor e tirar dúvidas sobre a tarefa nos horários de atendimento.
Turma AB: O peso desta tarefa é 2.