3
Pontif´ ıcia Universidade Cat´olica de Minas Gerais Curso de Ciˆ encia da Computa¸c˜ ao Disciplina: Algoritmos e Estruturas de Dados II Trabalho Pr´ atico III - Estruturas Sequenciais 1 Regras B´ asicas 1. extends TP1RegrasBasicas; 2. Todas as classes devem ser entregues em um ´ unico arquivo. Essa regra ser´a necess´aria para a sub- miss˜ ao de trabalhos no Verde e no identificador de pl´agio utilizado na disciplina. Eventualmente, a mesma pode ser descartada pelo professor. 3. Use o padr˜ao Java para coment´ arios. 2 Introdu¸c˜ ao Acole¸c˜ ao de arquivos brasileirao.zip foi obtida no site chancedegol.uol.com.br e ela contempla todas as partidas do Brasileir˜ao de Futebol entre os anos de 2003 e 2015 (junho). Os arquivos dessa cole¸c˜ ao usam o padr˜ao de codifica¸c˜ ao ISO-8859-1 e est˜ao nomeados como brAAAA.html, onde AAAA cor- responde ao ano do campeonato. Para cada partida, temos: data, mandante, placar, visitante e as probabilidades de vit´oria do mandante, do visitante e de empate. O site calcula essas probabilidade e as disponibiliza antes de cada partida. A cole¸c˜ ao deve ser descompactada na pasta /tmp/. 1 3 Descri¸c˜ ao 1. Classe Partida: Crie uma classe Partida seguindo todas as regras apresentadas na uni- dade01 conceitosbasicos.pdf. Sua classe ter´a os atributos privados data (Date), nome do man- dante (String), n´ umero de gols do mandante (int), n´ umero de gols do visitante (int), nome do visitante (String), probabilidade de vit´oria do mandante (double), probabilidade de empate (double) e probabilidade de vit´oria do visitante (double). Ela ter´a tamb´ em pelo menos dois construtores, e os m´ etodos gets, sets, clone e imprimir. O m´ etodo imprimir mostra a string “DD/MM/AAAA (m) M x V (v) PM PE PV”, onde DD/MM/AAAA ´ e a data da partida, m 1 Quando reiniciamos o Linux, ele normalmente apaga os arquivos existentes na pasta /tmp/.

AED II - Alocação Estatica

Embed Size (px)

DESCRIPTION

Exercicios sobre Pilha, Lista, Fila

Citation preview

Page 1: AED II - Alocação Estatica

Pontifıcia Universidade Catolica de Minas GeraisCurso de Ciencia da ComputacaoDisciplina: Algoritmos e Estruturas de Dados II

Trabalho Pratico III - Estruturas Sequenciais

1 Regras Basicas

1. extends TP1RegrasBasicas;

2. Todas as classes devem ser entregues em um unico arquivo. Essa regra sera necessaria para a sub-

missao de trabalhos no Verde e no identificador de plagio utilizado na disciplina. Eventualmente,

a mesma pode ser descartada pelo professor.

3. Use o padrao Java para comentarios.

2 Introducao

A colecao de arquivos brasileirao.zip foi obtida no site chancedegol.uol.com.br e ela contempla todas

as partidas do Brasileirao de Futebol entre os anos de 2003 e 2015 (junho). Os arquivos dessa colecao

usam o padrao de codificacao ISO-8859-1 e estao nomeados como brAAAA.html, onde AAAA cor-

responde ao ano do campeonato. Para cada partida, temos: data, mandante, placar, visitante e as

probabilidades de vitoria do mandante, do visitante e de empate. O site calcula essas probabilidade e

as disponibiliza antes de cada partida. A colecao deve ser descompactada na pasta /tmp/.1

3 Descricao

1. Classe Partida: Crie uma classe Partida seguindo todas as regras apresentadas na uni-

dade01 conceitosbasicos.pdf. Sua classe tera os atributos privados data (Date), nome do man-

dante (String), numero de gols do mandante (int), numero de gols do visitante (int), nome

do visitante (String), probabilidade de vitoria do mandante (double), probabilidade de empate

(double) e probabilidade de vitoria do visitante (double). Ela tera tambem pelo menos dois

construtores, e os metodos gets, sets, clone e imprimir. O metodo imprimir mostra a string

“DD/MM/AAAA (m) M x V (v) PM PE PV”, onde DD/MM/AAAA e a data da partida, m

1Quando reiniciamos o Linux, ele normalmente apaga os arquivos existentes na pasta /tmp/.

Page 2: AED II - Alocação Estatica

e v sao respectivamente os numeros de gols marcados pelo mandante e visitante, M e V sao os

nomes do mandante e o visitante, respectivamente, e PM, PE e PV sao as probabilidades de

vitoria do mandante, de empate e vitoria do visitante, respectivamente. A entrada padrao e

composta por varias linhas e cada uma corresponde ao nome (e caminho) de um arquivo texto

da colecao Brasileirao. A ultima linha da entrada e a palavra FIM. Cada arquivo da colecao

contem varias partidas de um campeonato. A saıda padrao tambem contem varias linhas, uma

para cada partida de cada campeonato disponıvel em uma linha da entrada padrao.

2. Lista com Alocacao Sequencial: Crie uma Lista de partidas baseada na lista de inteiros

vista na sala de aula (arquivo Lista.java). Sua lista deve conter todos os atributos e metodos

existentes na lista de inteiros, contudo, adaptados para a classe Partida. Em especial, lembre-se

que, na verdade, temos uma lista de ponteiros e cada um deles apontara para um objeto Partida.

Neste exercıcio, faremos insercoes, remocoes e mostraremos os elementos de nossa lista.

Os metodos de inserir e remover devem operar conforme descrito a seguir, respeitando parametros

e retornos. Primeiro, o void inserirInicio(Partida partida) insere um objeto na primeira posicao

da Lista e remaneja os demais. Segundo, o void inserirMeio(Partida partida, int p) insere

um objeto na posicao p da Lista, onde p < n e n e o numero de objetos cadastrados. Em

seguida, esse metodo remaneja os demais objetos. O void inserirFim(Partida partida) insere

um objeto na ultima posicao da Lista. O Partida removerInicio() remove e retorna o primeiro

objeto cadastrado na Lista e remaneja os demais. O Partida removerMeio(int posicao) remove

e retorna o objeto cadastrado na p-esima posicao da Lista e remaneja os demais. O Partida

removerFim() remove e retorna o ultimo objeto cadastrado na Lista.

A entrada padrao e composta por duas partes. A primeira e igual a entrada da primeira questao.

As demais linhas correspondem a segunda parte. A primeira linha da segunda parte tem um

numero inteiro n indicando a quantidade de objetos a serem inseridos/removidos. Nas proximas

n linhas, tem-se n comandos de insercao/remocao a serem processados neste exercıcio. Cada uma

dessas linhas tem uma palavra de comando: II inserir no inıcio, IM inserir no meio, IF inserir no

fim, RI remover no inıcio, RM remover no meio e RF remover no fim. No caso dos comandos de

inserir, temos tambem os atributos do objeto a ser inserido. Esses atributos estao organizados em

strings da forma “DD/MM/AAAA M - mxv V - PM PE PV”. No caso dos comandos do “meio”,

temos tambem a posicao. No IM, a posicao fica depois dos atributos. A saıda padrao tem uma

linha para cada objeto removido sendo que essa informacao sera constituıda pela palavra “(R)”

e a data da partida e o nome do mandante. No final, a saıda mostra atributos relativos a cada

objeto cadastrado na lista apos as operacoes de insercao e remocao.

3. Pilha com Alocacao Sequencial: Crie uma Pilha de Partidas baseada na pilha de inteiros

vista na sala de aula. Neste exercıcio, faremos insercoes, remocoes e mostraremos os elementos

Page 3: AED II - Alocação Estatica

de nossa pilha. A entrada e a saıda padrao serao como as da questao anterior, contudo, teremos

apenas os comandos I para inserir na pilha (empilhar) e R para remover (desempilhar).

4. Fila Circular com Alocacao Sequencial: Crie uma classe Fila Circular de Partida. Essa

fila deve ter tamanho cinco. Em seguida, faca um programa que leia varias partidas e insira

seus atributos na fila. Quando o programa tiver que inserir um objeto e a fila estiver cheia,

antes, ele deve fazer uma remocao. A entrada padrao sera igual a da primeira questao. A saıda

padrao sera um numero inteiro para cada arquivo inserido na lista. Esse numero corresponde ao

somatorio do numero de empates contidos na fila apos cada insercao.