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.
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:
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).