Uma pequena empresa tem seu serviço de atendimento ao cliente feito através de uma unidade de resposta audível (URA) e uma única telefonista. A URA serve para os clientes digitarem seu tipo de atendimento. A URA também pode ser utilizada para controlar a prioridade das ligações e a fila de espera. Como o numero de clientes tem crescido muito é preciso ajudar a URA a controlar esta prioridade.
As regras são as seguintes:
A entrada deve ser feita pela entrada padrão (stdin
).
O arquivo é formado por uma sequência de linhas, onde cada linha representa um ligação chegando. Cada linha tem 3 campos: o primeiro é o tempo em que a ligação chega (em minutos), o segundo é o tipo (uma string de no máximo 3 caracteres), e o terceiro é o identificador do ligação (uma string de no máximo 3 caracteres). Estas linhas estão ordenadas pelo primeiro campo (tempos menores no início).
Exemplo:
2 REC A 5 REC B 10 COM C 11 INF D 13 REC E 17 INF F 24 REC G
A saída deve ser feita pela saída padrão (stdout
).
O arquivo será composto por uma sequência de linhas. Uma linha para cada evento (ura, atendido ou urgencia).
O evento 'ura' significa que o telefonema foi recebido pela Ura. O evento 'atendido' significa que o telefonema foi recebido pela telefonista. O evento 'urgencia' significa que o telefonema foi tratado pela telefonista assim que possivel.
Cada linha tem 3 campos separados por espaço (um único espaço entre cada par de campos). O primeiro campo é o tipo do evento. O segundo campo é o tempo final de atendimento (em minutos). E o terceiro é o identificador da ligação.
Por exemplo um conteúdo do arquivo de saída válido seria:
ura 2 A ura 5 B atendido 7 A ura 10 C ura 11 D atendido 12 B ura 13 E atendido 14 D ura 17 F atendido 21 C ura 24 G urgencia 26 E urgencia 28 F atendido 32 GPara calcular o tempo final de atendimento, considere o tempo de entrada + tempo de ligação (segundo o tipo) + espera (se tiver).
Exemplo 1: "2 REC A", seria 2+5 , entao "atendido 7 A".
Exemplo 2: "5 REC B", seria 5+5+2 , entao "atendido 12 B".
O trabalho deve ser feito de forma que possa ser compilado e executado nas servidoras de computação do Departamento de Informática.
O nome do executável deve ser ura
.
Não devem ter nenhuma opção de linha comando.
Além dos arquivos fonte, deve acompanhar um makefile
e um relatório
com no máximo 2 páginas contendo os nomes dos alunos, uma descrição das
estruturas de dados e das soluções encontradas e uma documentação
sintetizada do sistema implementado. Qualquer particularidade deve
estar descrita neste texto.
Para compilar será usado o comando make
(sem nenhum parâmetro).
Para testar será executado um script como o abaixo.
ura < teste.in > teste.out diff teste.sol teste.out
Onde teste.in
é o arquivo de entrada do teste e teste.sol
é o
esperado como saída.
Caso o teste seja positivo (não imprime nada) será analisado o código fonte.
O trabalho deve ser empacotado em um arquivo login1-login2.tar.gz, onde
login1-login2 é uma string com os logins dos integrantes da equipe nas
servidoras do DInf. Ao descompactar este arquivo deverá ser criado um
diretório de nome login1-login2 que conterá todos os demais arquivos. O
make
e o script acima deverão funcionar dentro deste diretório (não
em subdiretórios).
Este arquivo deve ser enviado por e-mail ao endereço do professor com o assunto "CI056-trab2" (exatamente).
O trabalho DEVE ser feito em equipes de 2 (dois) ou 3 (três) alunos.