josilva2430
(usa Ubuntu)
Enviado em 26/07/2016 - 20:50h
Boa noite galerinha! Estou com um trabalho da faculdade para fazer e PRECISO da ajuda de vocês! O trabalho é o seguinte:
Deverá sem implementado 4 TAD's:
1. Data
Implemente o TAD Data para utilizá-lo no sistema.
2. Compromisso
A agenda de um professor pode ter vários tipos de compromissos, definidos a partir de um identificador numérico de tipo bem como informações adicionais associadas. O sistema a ser desenvolvido deve suportar 5 tipos de compromissos:
• AULA: data, hora, duração (em minutos) e nome da disciplina ministrada.
• ORIENTAÇÃO: data, hora, duração(em minutos) e nome do aluno orientado.
• REUNIÃO: data, hora, duração (em minutos) e nome da reunião
• EVENTO: participação em eventos técnicos como congressos e conferências. Possui data, hora, duração (em dias), nome do evento. Você pode assumir que um evento começa as 0hs do dia inicial e terminam as 24hs do último dia.
• COMPROMISSO PARTICULAR: data,hora, duração (em minutos) e razão
Você pode assumir que nome de disciplina, nome de aluno, nome de reunião, nome de evento e razão de compromisso particular são cadeias de caracteres, todas com um tamanho máximo M = 100.
Cada compromisso possui também um identificador numérico único, que servirá para realização de alterações após a criação do mesmo.
ORIENTAÇÃO 1, AULA 2, EVENTO 3, REUNIÃO 4, COMPROMISSO PARTICULAR 2
Um professor deve poder alterar (aumentar ou diminuir) o grau de prioridade de qualquer compromisso. Os graus de prioridade deverão ser utilizados para definir quais compromissos serão cumpridos e quais deverão ser cancelados. Se dois compromissos têm conflito de horário, aquele com a maior prioridade deverá ser cumprido (Vide regras de desempate abaixo). Um professor ainda poderá definir se um dado compromisso pode ser adiado ou não, definindo o campo adiável apropriadamente. Note que AULA e EVENTO não podem ser adiados. Em caso de conflito, se o compromisso com menor prioridade for adiável, ele será adiado. Caso
contrário, ele terá que ser cancelado (veja descrição abaixo). Neste caso, cada compromisso tem também um campo status associado informando se ele poderá ser cumprido, se ele deverá ser cancelado ou adiado. Em outras palavras, este campo pode assumir um dos código (valores numéricos) “A SER CUMPRIDO”, “ADIADO” ou “CANCELADO”. Um compromisso deve suportar, no mínimo, as seguintes operações:
• inicializaCompromisso(tipo, data, hora, duração e nome): inicializa um compromisso com os valores informados. Esta função deve atribuir um identificador numérico único para o compromisso e retorná-lo como resultado. Além disto, no momento de criação, todo
compromisso deve poder ser cumprido e não pode ser adiado. Logo, o status de um compromisso recém-criado será sempre “A SER CUMPRIDO”, e o campo adiável deverá ser inicializado com FALSE.
• alteraPrioridade(novaPri): altera a prioridade de um compromisso com um novo valor passado como parâmetro.
• retornaPrioridade(): retorna a prioridade de um compromisso.
• eAdiavel(flag): define se compromisso passado como parâmetro é adiável ou não. O parâmetro flag deve ser TRUE se compromisso é adiável e FALSE caso contrário.
• temConflito(compromisso1, compromisso2): esta operação deve retornar se há ou não conflito nos horários dos dois compromissos passados como parâmetros.
•atribuiStatus(flag): determina se o compromisso poderá ser cumprido, se ele deverá ser cancelado ou adiado. O parâmetro flag deve conter um dos três valores “A SER CUMPRIDO”, “ADIADO” ou “CANCELADO”.
• retornaStatus(): retorna se compromisso poderá ser cumprido, se ele deverá ser cancelado ou adiado.
• imprimeCompromisso(): imprime todas as informações associadas a um compromisso seguindo a ordem identificador, tipo, data, hora, duração, nome de disciplina/aluno/reunião/evento (ou razão), adiável, status. Você deve imprimir o tipo na forma de cadeia de caracteres (ex: REUNIÃO) e não o valor numérico.