Problema 3


Notas

A resolver em grupo.

A resolução deste problema deve ser entregue até ao dia 17 de Dezembro de 1998.  A resolução deve ser entregue pessoalmente a um dos docentes da cadeira e consta de uma disquete, devidamente identificada, contendo apenas o ficheiro onde se encontra o código (que se deve chamar prob3.cpp).

A entrega do problema fora do prazo implica a penalização de um valor por cada dia útil de atraso.

O peso de cada questão na avaliação deste problema é indicado entre [] junto às mesmas.


Questão 1

[100% - 20 valores]

O objectivo deste problema é construir um sistema de cobrança de portagens numa auto-estrada.  Considere que a auto-estrada tem 10 pontos de entrada e saída de veículos (numerados de zero a nove), cada um correspondente a uma portagem.  Suponha, para simplificar, que as matrículas dos veículos são números inteiros.  A quantia a pagar por cada veículo quando sai da auto-estrada é de 1 000$ vezes o número de troços entre portagens da auto-estrada que percorreu.  Por exemplo, um veículo que, tendo entrado no ponto 3, saia no ponto 1 deve pagar 2 000$.  A inserção de dados sobre entradas e saídas da auto-estrada será feita a partir do teclado, e terá a seguinte forma:

  1. Se o veículo de matrícula 123 entrou na portagem 3:

  2.     E 123 3
  3. Se o mesmo veículo saiu do auto-estrada na portagem ponto 5 e entregou 2 000$:

  4.     S 123 5 2000
O objectivo do programa a desenvolver é ler sequências da dados sobre entradas e saídas verificando: Para terminar o programa o utilizador introduzir a letra 'Q'.  No final do programa deve ser mostrado no ecrã um relatório indicando quais os carros que ainda se encontram na auto-estrada e onde entraram.

A avaliação terá em conta não só o correcto funcionamento do programa, mas também, e principalmente, a adequação da estrutura de dados utilizada à resolução do problema, a correcta estruturação do programa em funções, e a sua legibilidade e clareza.  As funções e os ciclos deverão ser comentados com PC, CO e CI (pré-condição, condição objectivo e condição invariante), mesmo que duma forma informal (e.g., em português).

Observação: pode impor um limite ao número máximo de carros permitidos dentro da auto-estrada em cada instante, por exemplo 100 (mas deverá assinalar erro para cada ordem de entrada após esse limite).