Tarefa 4 - Planejamento de viagem

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.

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.