A maior rede de estudos do Brasil

Grátis
6 pág.
Trabalho AED - Primeira lista de exercícios 2o sem 2020

Pré-visualização | Página 1 de 2

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Curso: Sistemas de Informação 
Algoritmos e Estruturas de Dados – 2º semestre de 2020 
Professor: Rodrigo Richard Gomes e Pedro Ivo
Entrega do trabalho pelo SGA : até 23/09/2019 
Atenção: não serão aceitas cópias de trabalhos/questões. Vamos utilizar o critério de honestidade 
acadêmica. Você pode trocar ideias com seus colegas, mas sugiro fortemente que você não mostre suas 
soluções (não adianta trocar nomes de variáveis, etc...). Se para chegar a uma solução você conversou 
com algum colega, dê crédito a ele(s) (exemplo: para resolver essa questão eu segui uma sugestão de 
fulano de tal). Além de avaliar se as funções estão corretas, outro critério a ser utilizado é se sua solução 
foi bem projetada. Recomenda-se também que você implemente e teste todos os métodos no C#. Obs: 
todas as funções devem ser NÃO-DESTRUTIVAS, ou seja, ao final da função os dados recebidos como 
parâmetros devem estar intactos e na mesma ordem em que foram recebidos. 
Você deve entregar um arquivo em formato PDF contendo o enunciado e a solução de cada exercício. 
Faça uma capa adequada para um trabalho acadêmico. 
Parte 1 – Coleções do namespace System.Collections: ArrayList, Queue, Stack e Hashtable/SortedList 
Entregue 10 exercícios dessa lista (os exercícios marcados com * são obrigatórios) 
1 – Crie a função public ArrayList CopiaArrayList(ArrayList origem) que copia todos os dados do 
ArrayList origem e retorna o novo ArrayList criado. Atenção: para esse exercício não será permitido usar 
os métodos Clone() e CopyTo(). 
2 – Crie a função public ArrayList CopiaQueueParaArrayList(Queue origem), que copia todos os dados 
do Queue origem e retorna o novo ArrayList criado. Atenção: para esse exercício não será permitido usar 
os métodos Clone() e CopyTo(). 
3 – Crie a função public ArrayList CopiaParteArrayList (ArrayList origem, int inicio, int final), a qual 
retorna um ArrayList contendo todos os elementos dentro do intervalo determinado pelos parâmetros 
inicio e final. Não é permitido usar o método CopyTo() do ArrayList. Atenção: caso o ArrayList origem 
tenha menos posições do que a determinada pelo parâmetro final, copie até a sua última posição. Caso 
o parâmetro inicio seja maior que a quantidade de elementos do ArrayList origem, retorne um ArrayList
vazio. Por fim, se o parâmetro inicio for maior que o parâmetro final, indica que o usuário deseja copiar
os dados na ordem invertida.
4 – Crie o procedimento public void ApagaArrayList(ArrayList origem, int inicio, int final), o qual apaga 
todos os elementos no intervalo determinado pelos parâmetros inicio e final. Atenção: não é permitido 
usar o método RemoveRange(). Apenas Remove() e RemoveAt(). 
Exemplo: ApagaArrayList(AL, 7, 10) => apagar os elementos entre as posições 7 e 10. 
5 – Crie o procedimento public void ApagaArrayList2(ArrayList origem, int inicio, int qtde), o qual 
apaga todos os qtde elementos à partir da posição determinada pelo parâmetro início. Atenção: não é 
permitido usar o método RemoveRange(), apenas Remove() e RemoveAt(). 
Exemplo: ApagaArrayList2(AL, 7, 5) => apaga 5 elementos à partir da posição 7, ou seja, os elementos 
das posições 7, 8, 9, 10 e 11. 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Curso: Sistemas de Informação 
Algoritmos e Estruturas de Dados – 2º semestre de 2019 
Professor: Rodrigo Richard Gomes 
6 – Crie a função public ArrayList ConcatenaArrayList(ArrayList AL1, ArrayList AL2), o qual retorna um 
novo ArrayList como todos os elementos de AL1 e AL2. 
Exemplo: 
ArrayList A = new ArrayList(); 
ArrayList B = new ArrayList(); 
ArrayList AmaisB; // Apenas a referência foi declarada. Um ArrayList auxiliar deverá ser criado 
 // dentro da função e retornado pela mesma 
// código para preencher os ArrayLists A, B 
AmaisB = ConcatenaArrayList(A, B); 
A= [19, 33, 2, 4] 
B = [1, 2, 3, 4, 5] 
AmaisB = [19, 33, 2, 4, 1, 2, 3, 4, 5] 
7 – Crie o procedimento public void ConcatenaArrayList2(ArrayList AL1, ArrayList AL2, ArrayList AL3), o 
qual copia todos os elementos de AL1 e AL2 para AL3. 
Exemplo: 
ArrayList A = new ArrayList(); 
ArrayList B = new ArrayList(); 
ArrayList AmaisB = new ArrayList(); // O ArrayList para a concatenação foi instanciado. 
 // Não será necessário instanciá-lo dentro da função. 
// código para preencher os ArrayLists A, B 
ConcatenaArrayList2(A, B, AmaisB); 
8.1 – Crie a função public ArrayList Intersecao(ArrayList AL1, ArrayList AL2) que retorna um ArrayList 
contendo os elementos em comum armazenados em AL1 e AL2, sem repetição. 
8.2 – Crie a função public ArrayList Uniao(ArrayList AL1, ArrayList AL2) que retorna um ArrayList 
contendo os elementos armazenados em AL1 ou em AL2, sem repetição. 
9 – Crie o procedimento public void ApagaRepetidos(ArrayList AL) que apaga todos os elementos 
repetidos do ArrayList AL recebido como parâmetro, mantendo apenas a 1ª ocorrência de cada 
elemento. 
10 – Crie a função public ArrayList OcorrenciasDe(ArrayList AL, Object elemento) o qual retorna um 
vetor contendo todas as posições que contem o elemento passado como parâmetro. 
11 – Crie a função public int QtdeOcorrencias(ArrayList AL, Object elemento) a qual retorna a 
quantidade de vezes que o elemento passado como parâmetro está armazenado no ArrayList. 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Curso: Sistemas de Informação 
Algoritmos e Estruturas de Dados – 2º semestre de 2019 
Professor: Rodrigo Richard Gomes 
 
12 – Crie a função public Queue CopiaQueue(Queue origem) a qual retorna uma cópia da Queue origem 
passada como parâmetro. Os elementos da Queue origem devem permacer na mesma ordem original. 
Atenção: não é permitido usar os métodos Clone() e CopyTo() da classe Queue. 
 
13 – Crie a função public Stack CopiaStack (Stack origem) a qual retorna uma cópia da Stack origem 
passada como parâmetro. Os elementos da Stack origem devem permacer na mesma ordem original. 
Atenção: não é permitido usar os métodos Clone() e CopyTo() da classe Stack. 
 
14 – Crie o procedimento public void VaiProFundo(Stack origem, Object elemento) que empilha o 
elemento passado como parâmetro no fundo da Stack, ao invés de no topo. 
 
15 – Crie o procedimento public void InverteQueue(Queue Q) que inverte a ordem dos elementos do 
Queue Q, no próprio Queue. OBS1: utilize outras estruturas - vetor, ArrayList, Stack ou mesmo outro 
Queue – que julgar necessárias. OBS2: nesse exercício você não deve utilizar o método reverse. 
 
16 – Crie o procedimento public void InverteStack(Stack S) que inverte a ordem dos elementos do Stack 
S, no próprio Stack. OBS1: utilize outras estruturas - vetor, ArrayList, Stack ou Queue – que julgar 
necessárias. OBS2: nesse exercício você não deve utilizar o método reverse. 
 
17 – Crie a função public Hashtable ConcatenaHashtable(Hashtable HT1, Hashtable HT2), o qual 
retorna um novo Hashtable contendo todos os elementos de HT1 e HT2. 
 
* 18 – Um biólogo precisa de um programa que traduza uma trinca de nucleotídeos em seu aminoácido 
correspondente. Por exemplo, a trinca de aminoácidos ACG é traduzida como o aminoácido Treonina, e 
GCA em Alanina. Crie um programa em C# que use um Hashtable para criar um dicionário do código 
genético. O usuário deve digitar uma trinca (chave) e seu programa deve mostrar o nome (valor) do 
aminoácido correspondente. Use a tabela abaixo para cadastrar todas as trincas/aminoácidos. 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Curso: Sistemas de Informação 
Algoritmos e Estruturas de Dados – 2º semestre de 2019 
Professor: Rodrigo Richard Gomes 
 
* 19 – Crie um dicionário com URL’s e IP’s dos websites abaixo e mais 5 à sua escolha. O seu dicionário 
deve ser implementado usando a classe Hashtable e terá a URL como chave e o IP correspondente como 
valor (por exemplo, se digitarmos como chave a URL www.google.com, seu programa deve retornar o IP 
74.125.234.81). O seu programa deve permitir que o usuário digite uma URL e deve imprimir o IP 
correspondente.

Crie agora seu perfil grátis para visualizar sem restrições.