You are on page 1of 7

Algoritmia

e Programao
Trabalho Prtico
Ano de 2015/2016

Nome / Sara Belchior / 1091265


Joo Ribeiro / 1111263
Nmero / Curso / Engenharia Instrumentao e Metrologia
Data 09/01/2016

ndice

Introduo3

Desenvolvimento do trabalho..4

Concluso..7

Introduo
No mbito da unidade curricular Algoritmia e Programao foi proposto
turma, desenvolver um programa que auxiliasse o processo de gesto de portagens de
uma auto-estrada em linguagem de programao C.
Neste projecto o programa deve registar a informao dos veculos que entram
na autoestrada, bem como todas as portagens onde entraram e saram, e montantes
pagos.
Este trabalho permiti-nos- desenvolver uma melhor capacidade de resolver
problemas propostos e ajudar na nossa evoluo da aprendizagem de uma liguagem
de programao. Atravs dele iremos aprender a utilizar certas ferramentas teis em
progamao, como por exemplo vetores e estruturas.

Objectivos e Desenvolvimento do trabalho


Para a realizao deste projecto foi necessario criar 3 estruturas (uma de
veiculos, uma de portagens e uma de autoestradas) e vectores onde fosse possivel
armazenar toda a informao recolhida pelo utilizador.
Para ser possivel registar a entrada de um veiculo na autoestrada foi criada a
funo registarentrada onde vai ser possivel perguntar ao utilizador qual a
matricula e a classe do carro que quer dar entrada na autoestrada, bem como a
portagem onde d entrada. J nesta funo feita a validao da classe do carro.
A funo veiculosretidos tem como funo registar todos os veiculos que
ainda no registaram a sada, logo que ainda no saram da autoestrada. Esta funo
percorre o vector dos veiculos e verifica quais os veiculos que ainda no tm uma
saida registada e guarda esse veiculos num novo vetor de veiculos retidos.
Para listar os veiculos que ainda se encontram em circulao foi criada a funo
listarretidos que simplesmente percorre a portagem de sada e caso esteja a 0
(significa que o veiculo ainda no sau) ele mostra a matricula e a classe dos mesmos.
De seguida criamos a fun pesquisarclasse, que vai pedir ao utilizador a
classe que pretende procurar (e validando de novo a mesma) e usando o vetor
preenchido na funo veiculosretidos, ela percorre-o e conta quantos veiculos esto
nesse vetor.
A proxima funo pesquisarmatricula, vai fazer pesquisar a uma matricula
introduzida pelo utilizador e vai mostrar se este se encontra na autoestrada ou no e se
ainda estiver em circulao, ela vai vai mostrar em que portagem entrou.
Na funo valorpagar, a unica funcionalidade calcular os valores a pagar por
cada classe, visto que se o veiculo no for de classe 1 tem um valor acrescido a pagar.
A funo seguite registarsaida, vai registar a sada do veculo da autoestrada,
ela vai listar todos os veiculos que ainda no deram sada da autoestrada, vai pedir para
o utilizador escolher um veiculo e depois listar as possibilidade de sada que o veiculo
e de seguida calcular o valor total a pagar pelo mesmo. Da maneira como foi criada
esta funo no necessario haver uma validao se o veiculo quer dar saida sem ter
dado entrada.

De seguida com a funo maismenosfaturado, vai percorrer o vector de


portagnes e por comparao entre eles vai apresental qual a portagem que mais faturou
e a que menos faturou at ao momento. Apresenta tambem o valor que elas faturaram.
A funo valoranual, percorrendo o vetor vai fazendo o sumatorio do valor de
total pago de todas as portagens.
A prxima funo listadecrescente, de novo vai percorrer o vetor de
autoestrada e comparando o valor das variaveis totalveiculos (trafego que passa em cada
portagem) e faz uma lista decrescente com base nessa variavel.
No menu temos o primeiro conjunto de opes iniciais que ir fazer com que o
utilizador tenha a possibilidade de escolher fazer o que pretende mediante as opes que
lhe so apresentadas.
Na main foram criados todos os vetores necessarios neste programa e foi
tambem adicionada a autoestrada que nos foi fornecida como exemplo para que seja
fosse possivel testar previamente o programa.

Limitaes Encontradas
Foram encontrados muitos obstculos no decorrer deste projecto. Um deles foi
com a utilizao do gets para guardar uma varivel do tipo string, pois este mtodo no
aceitava o uso de scanf no decorrer do cdigo, pelo menos achamos que era esse o
problema. At que decidimos trocar o gets para o fgets e mesmo assim no
conseguimos solucionar o problema e ento por fim decidimos passar tambm todos os
scanfs para fgets e imediatamente a seguir, quando a varivel era um inteiro ou um
float fez logo a converso de string para, por exemplo, inteiro pelo mtodo atoi e s
assim conseguimos contornar este obstculo. S tomamos conhecimento que era possvel
a utilizao do mtodo atoi atravs um nosso colega que frequenta o curso de
Engenharia Informtica e nos explicou como fazer quando lhe perguntamos o que ele
faria se este problema lhe aparecesse. Outros problemas surgiram como, por exemplo,
para inserir um veiculo, ao preencher os seus dados, o programa, mesmo no sendo
introduzida nenhuma informao relativamente sada do mesmo, preenche a sada com
informao lixo no sendo depois possvel para a funo de veculos retidos procurar
por sadas vazias.

Concluso
Como j foi referido, este trabalho foi muito til para consolidar vrios conceitos
aprendidos em aulas tericas desta unidade curricular. Saber algumas bases de
programao poder vir a ser muito til a nvel profissional.
Com este trabalho, atravs da sua resoluo conseguimos absorver bastante
conhecimento relativamente a vetores e apontadores. Permitiu-nos desenvolver a
capacidade de sermos autnomos e foi necessrio organizar as ideias que iam surgindo de
modo a conseguir implementa-las no cdigo.
Por fim podemos afirmar que com este projeto, uma forma de aplicarmos o
nosso conhecimento adquirindo ao longo das aulas prticas e tericas de Algoritmia e
Programao que nos possibilitou a passagem por alguns obstculos que fomos
encontrando ao longo da resoluo do trabalho. Porm existem muitas melhorias a fazer
ao programa, tais como a verificao da matricula, entre outras. Muitas duvidas surgiram
na concluso do programa o que dificultou bastante a qualidade do mesmo. No foram
efectuadas muitas validaes possvel, uma vez que sem ultrapassar os obstculos
referidos no decorrer deste relatrio no fazia sentido acrescentar mais cdigo, sendo que
a nossa prioridade era primeiro pr todas as funcionalidade bsicas a correr direito e s
depois fazer as vrias validaes pedidas.

You might also like