Exercicio—Fila

Propaganda
Guia das aulas praticas e de laboratório de ATAI
Ano Lectivo 2005/2006
TAD Fila
Exercícios Práticos
1 - Elabore um programa que utilizando uma implementação do TAD Pilha para
manipulação dos inteiros, efectue as seguintes tarefas:
a) Defina a classe FilaVaziaException que é um subclasse de Exception, e que
deverá conter a seguinte mensagem de falha – “ A fila está vazia”.
b) Defina uma interface IntFila para o TAD Fila, contendo os seguintes métodos:
tamanho
vazia
//retorna o comprimento da fila
//testa se a fila esta vazia
primeiro
//devolve o primeiro elemento da fila dá uma excepção se a fila estiver vazia
coloca
//introduz um elemento na fila
retira
//retira o primeiro elemento da fila e dá uma excepção se a fila estiver vazia
getIterator
//devolve o iterador sobre os elementos da fila
c) Defina a classe FilaListaSimples que implementa a interface IntFila, através
do uso de listas simplesmente ligadas.
d) Implemente um pequeno programa, para testar a classe criada na alínea c).
Este programa deverá testar todos os métodos desenvolvidos nas alíneas
anteriores.
2 - Usando a classe definida na alínea a) do exercício 1 e a interface definida na
alínea b), implemente a classe FilaVector que implementa a interface IntFila,
através do uso da classe Vector do JAVA.
Alguns métodos da classe Java.util.Vector:
•
void addElement (Object o) – adiciona um elemento no final do Vector
•
void insertElementAt (Object o, int index) – adiciona um elemento no
específico indice do Vector
•
Object elementAt (int índex) – retorna um elemento do Vector
armazenado num índice específico
•
boolean isEmpty () – retorna true se o Vector não contem elementos
© DSI 2005
33
Guia das aulas praticas e de laboratório de ATAI
Ano Lectivo 2005/2006
3 - Desenvolva um programa que gere soluções para o chamado problema de
Josephus.
Este problema pode ser visto como um processo de eleição de um leader: N
pessoas elegem um leader colocando-se em círculo e contando até M. A pessoa
que estiver na posição M é eliminada do círculo e a contagem recomeça no
indivíduo imediatamente a seguir a essa pessoa.
O processo termina quando restar apenas uma única pessoa, que será o leader.
O programa deverá chamar-se josephus e aceitar 2 parâmetros inteiros positivos, N
e M, com o significado dado acima.
Cada pessoa é identificada por um número. Durante a execução, o programa
deverá apresentar o número de pessoas que vão sendo eliminadas. No fim da
eleição, o programa deverá indicar quem é o leader.
Exemplo: josephus 5 8
3
2
5
4
leader: 1
Exercícios de Laboratórios
1 - Desenvolva um programa que permita gerir uma pista para descolagem de
aviões dum aeroporto. Para o correcto funcionamento desta pista é necessário que
sejam implementadas as seguintes funcionabilidades:
•
Nº de aviões à espera de descolar.
•
Descolagem de um avião.
•
Entrada de um novo avião para descolar.
•
Listar todos os aviões à espera de descolar.
•
Listar as características do próximo avião a descolar.
Utilize a classe FilaVector desenvolvida no exercício 2 e a seguinte implementação
da classe Avião:
public class Aviao extends Object
{
private String nome;
private int numero;
public Aviao(String nome, int numero)
© DSI 2005
34
Download