Você está na página 1de 8

Docente

Disciplina
José Antonio
Estrutura de Dados
Camacho Guerrero
Curso
Data
Ciência da Computação/Engenharia de
Abr/2018
Computação
Atividades não avaliativas

Parte 1 – Introdução
1) Assinale a estrutura de dados que pode ser usada para representar cada
um dos casos descritos a seguir.
Justifique, resumidamente, sua resposta.

a) Na maioria dos sistemas operacionais, os arquivos são organizados


hierarquicamente em um esquema de diretórios (pastas) e subdiretórios.

Opções : A) ( ) pilha B) ( ) fila C) ( ) árvore D) ( ) grafo

b) Navegadores para internet armazenam os últimos endereços visitados


em uma estrutura de dados. Cada vez que um novo site é visitado, o
endereço do site é adicionado na estrutura de endereços. Quando se
aciona o retorno (“back”), o navegador permite que o usuário retorne no
último site visitado e retira o endereço do site da estrutura de dados.

Opções : A) ( ) pilha B) ( ) fila C) ( ) árvore D) ( ) lista

2) Faça um programa em C++ para ler a largura e o comprimento de um


retângulo, calcular e imprimir o valor da área. O cálculo da área deverá ser
feito por uma função que receberá a largura e o comprimento como
parâmetros e retornará o valor calculado da área.
Protótipo da função:
double calcularAreaVersao1(double, double);

3) Considere o exercício 2 acima e escreva uma função diferente para o


cálculo da área de acordo com o seguinte protótipo:
void calcularAreaVersao2(double, double, &double);

A função receberá a largura e o comprimento passados por valor e receberá


um parâmetro área passado por referência, cujo objetivo é armazenar o
resultado do cálculo da área.

1 de 8
Parte 2 – Funções

1) Faça um programa que crie uma lista de inteiros distintos, através de


sucessivas inserções e depois a apresente na saída padrão. Implemente
funções para:

a) Inserir um valor, sem que haja repetição. Para isto, será preciso fazer
uma busca sequencial e inserir o valor passado apenas se ele não
existir na lista.

b) Percorrer a lista, imprimindo-a na saída padrão.

2 de 8
Parte 3 – Listas lineares

1) Crie uma lista não ordenada de inteiros, depois ofereça um menu com as
opções:

a) inserir em lista ordenada

b) remover de lista ordenada

c) apresentar os dados da lista

d) terminar o programa.

2) Após a implementação e teste do programa, você poderá melhorá-lo,


fazendo o menu se repetir várias vezes.

3 de 8
Parte 4 – Listas lineares sequenciais (lista, pilha e fila) e suas operações
básicas

1) Faça um programa em C++ para ler um número inteiro maior que zero,
converter este número de decimal para binário, usando pilha e apresentar
na tela, o resultado da conversão.

2) Construa um programa em C++ para ler um vetor de caracteres, empilhar


os caracteres que são letras em uma pilha P1 e empilhar os que são dígitos
em outra pilha P2. Ao final, desempilhe os dados de P2 e em seguida, os de
P1, imprimindo-os na tela.

3) Escrever um programa em C++ para ler um conjunto de números inteiros


positivos, empilhá-los em uma pilha P1 e depois desempilhá-los,
apresentando na tela apenas os dados pares.
4) Construa um programa em C++, que use a estrutura pilha e verifique se o
número de abre parênteses é igual ao número de fecha parênteses.

5) Faça um programa em C++ para apresentar um menu várias vezes, com as


seguintes opções:

MENU

1- Enfileirar um número inteiro positivo.

2- Desenfileirar tudo e imprimir apenas os valores que são múltiplos de 5.

3- Terminar o programa

Implemente, adequadamente, cada opção fornecida.

6) Faça um programa em C++ para ler uma sequência de caracteres (vetor de


char) e enfileirá-los. Em seguida, desenfileire todos os caracteres e
empilhe-os em uma pilha P seguindo as orientações:

a) Converta as letras para maiúsculas antes de empilhá-las


b) Qualquer outro caracter, empilhe sem alteração.

Ao final, desempilhe tudo, exibindo o resultado na saída padrão.

7) Faça um programa em C++ para apresentar um menu várias vezes, com as


seguintes opções:

MENU

1- Enfileirar um valor inteiro não nulo

4 de 8
2- Desenfileirar um valor, exibindo na tela o seu dobro

3- Desenfileirar tudo, exibindo os valores desenfileirados sem alterações

4- Terminar o programa

Implemente, adequadamente, cada opção fornecida usando funções para


enfileirar e desenfileirar.

8) Faça um programa que leia um vetor de char e enfileire seus dados em


duas filas : fila A(fila simples de char ) e fila B (fila circular com contador de
inteiros) da seguinte forma:
a) Se o caracter for dígito, converta-o para dígito e enfileire-o em B.
b) Se o caracter for letra, enfileire-o em A.
c) Qualquer outro caracter não deverá ser enfileirado.

Ao final, desenfileire as filas B e A, nesta ordem, exibindo os seus


dados.

5 de 8
Parte 5 – Ordenação e pesquisa em listas lineares sequenciais

1) Crie uma lista não ordenada de inteiros, ordene-a pelo bubblesort, depois
ofereça um menu com as opções:

a) inserir em lista ordenada

b) remover de lista ordenada

c) pesquisa binária

d) apresentar os dados da lista

e) terminar o programa.

2) Após a implementação e teste do programa, você poderá melhorá-lo,


fazendo o menu se repetir várias vezes.

3) Faça um programa para criar uma lista linear seqüencial não ordenada de
inteiros pares e oferecer um menu com as seguintes opções :

1 - Ordenação por troca (Bubblesort)

2- Ordenação por seleção

3- Ordenação por inserção

Uma vez escolhido o método de ordenação, a função adequada deverá ser


chamada e executada. Ao final, exiba a lista ordenada pelo método
escolhido.

6 de 8
Parte 6 – Agregado de dados heterogêneos : structs e Ponteiros e
alocação dinâmica de memória

#include <iostream>
#include<cstdlib>

using namespace std;


// define um tipo
struct aluno {
int matricula;
float media;
};

int main() {
// declara duas variáveis do tipo aluno
aluno a, b;

// declara um ponteiro para aluno


aluno *p;
a.matricula = 10;
a.media = 6.8;
p = &a;
b = a;
// atribui uma struct a outra
p->matricula = 100; //acessa o campo matricula
p->media = 9.5;
cout << "Matricula de a = " << a.matricula << endl
<< "Media de a = " << a.media << endl;

cout << "Matricula de b = " << b.matricula << endl


<< "Media de b = " << b.media << endl;

system(“pausa”);
}
1) Use o programa exemplo e acrescente um trecho para mostrar
apenas os nomes dos alunos com média superior a uma média dada
como entrada pelo usuário.

struct carta{
char naipe[7];
int numero;
}

2) Considere a structs, que define um tipo carta e faça uma aplicação,


usando pilha, que empilhe cartas de um baralho e depois desempilhe
todas as cartas, exibindo-as na tela com número e naipe. Deverá ser
considerado que cada carta possui um número (Ás ? 1,
2,3,4,5,6,7,8,9,10, valete-11, dama-12 e rei-13) e um naipe (paus,
ouros, espada e copas).

7 de 8
Parte 7 – Listas lineares encadeadas (lista, pilha e fila) e suas operações
básicas.

1) Utilizando os conceitos de listas encadeadas dinâmicas aprendidos na


disciplina, crie um menu para trabalhar com listas, pilhas e filas. Depois de
selecionada a opção desejada ofereça um outro menu com as opções:

a) inserir

b) remover

c) pesquisar por

d) apresentar os dados

e) voltar ao menu principal

8 de 8

Você também pode gostar