Buscar

ATIVIDADE PRÁTICA - ESTRUTURA DE DADOS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER 
ESCOLA SUPERIOR POLITÉCNICA 
TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 
DISCIPLINA DE ESTRUTURA DE DADOS 
 
 
 
 
 
 
 
ATIVIDADE PRÁTICA 
 
 
 
 
 
 
 
 
– RU: 
PROFESSOR 
 
 
 
 
 
 
 
 
 
CIDADE - ESTADO 
2021 
 
 
 
1 
 
1 EXERCÍCIO 1 
ENUNCIADO: Faça um algoritmo em linguagem C que emule as características de um 
player de músicas sendo executado em modo texto, via prompt de comando. 
1. Deve-se criar uma playlist das músicas utilizando uma lista encadeada. A lista encadeada 
poderá ser simples ou dupla, circular ou não circular. Fica a critério do aluno decidir. 
2. Deve-se armazenar o nome de cada música, do artista/banda e a duração da faixa. Para 
o armazenamento utilize uma estrutura heterogênea de dados. 
3. Para inserção dos dados, você pode criar uma leitura dos dados através de um menu na 
tela ou já deixá-los armazenados em um arquivo texto no seu computador e só carregar este 
arquivo ao executar o programa. Ou ambas soluções. Decida também como você irá implemen-
tar a inserção (no início, no fim ou no meio da lista encadeada); 
4. Deve existir um menu na tela. Este menu deve permitir a inserção de novas músicas 
(caso optado pela inserção manual de dados), deve ter a opção de listar todas as músicas da 
playlist (listagem de uma lista encadeada) na tela e encerrar o programa; 
 
Solução do aluno (algoritmo): 
#include <stdio.h> 
#include <stdlib.h> 
 
// Definição da Lista Encadeada 
struct playlist { 
 char musica[50], artista[50]; 
 float duracao; 
 struct playlist *prox; 
}; 
 
typedef struct playlist Playlist; 
 
//Função Inicializa a Playlist 
Playlist* inicializa(void) { 
 return NULL; 
} 
 
// Função insere dados 
Playlist* insere(Playlist* l) { 
 Playlist* novo = (Playlist*) malloc(sizeof(Playlist)); 
 
 printf("Informe a musica:\n"); 
 fgets(novo->musica, 49, stdin); 
 fgets(novo->musica, 49, stdin); 
 
 printf("Selecione o artista:\n"); 
 fgets(novo->artista, 49, stdin); 
 
 printf("Duracao da musica (sempre digite a virgula (,) para separar min e 
seg):\n"); 
 
 
 
 
 scanf_s("%f", &novo->duracao); 
 
 novo->prox = l; 
 return novo; 
} 
 
// Função testa se lista está vazia 
int vazia(Playlist* l) { 
 if (l == NULL) 
 return 1; 
 else 
 return 0; 
} 
 
// Função mostra os dados na tela 
void imprime(Playlist* l) { 
 Playlist* p; 
 for (p = l; p != NULL; p = p->prox) 
 printf("Musica = %s ", p->musica); 
 printf("Artista = %s ", p->artista); 
 printf("Duracao = %f\n", p->duracao); 
} 
 
int main() 
{ 
 int menu = 0; 
 int inicia_lista; 
 
 Playlist* l; 
 l = inicializa(); 
 
 while (menu != 3) { 
 
 
 //Menu Inicial 
 printf("Menu - Playlist da Uninter - Escolha a sua opcao: \n"); 
 printf("1 - Incluir Musica \n"); 
 printf("2 - Exibir Playlist \n"); 
 printf("3 - Encerra o Programa \n"); 
 
 scanf_s("%d", &menu); 
 
 //Testa qual opção do menu será selecionada 
 switch (menu) { 
 case 1: { 
 //executa incluir 
 printf("Para sair deste menu digite zero (0) na Duracao da Mu-
sica \n"); 
 Playlist* l; 
 l = inicializa(); 
 l = insere(l); 
 break; 
 } 
 case 2: { 
 //executa exibir 
 imprime(l); 
 break; 
 } 
 case 3: { 
 
 
 
 
 //executa sair 
 break; 
 } 
 default: 
 //caso o comando escolhido seja inválido 
 printf("Opcao Invalida. Escolha novamente. \n"); 
 
 break; 
 } 
 system("cls"); 
 } 
 return 0; 
} 
 
Solução do aluno (Tela): 
 
 
 
 
 
 
2 EXERCÍCIO 2 
ENUNCIADO: Faça um algoritmo em linguagem C que realiza a busca de um aluno da 
UNINTER no AVA. A busca deve ser realizada utilizando uma estrutura de dados bastante 
eficiente para esta tarefa de busca. Dentre as estruturas que podem ser empregados estão: árvore 
binária ou hash. 
1. Deve-se armazenar o nome do aluno, seu e-mail e seu RU. Para o armazenamento utilize 
uma estrutura heterogênea de dados. 
2. Não é necessário fazer a leitura dos dados dos dados dos alunos manualmente. Você já 
pode deixar pré-cadastrado os dados no seu código. Cadastre pelo menos uns 10 contatos de 
alunos na sua estrutura de dados. Um dos contatos deverá ser o seu próprio nome e o seu RU 
da UNINTER; 
3. Em um menu na tela, peça para o usuário digitar um RU. O programa deverá realizar a 
busca por este RU na estrutura de dados e, caso localize o RU, deverá mostrar o nome corres-
pondente do aluno e o e-mail deste contato. Caso não localize, uma mensagem de erro deve ser 
apresentada. 
4. Para testar o programa, teste a busca com o seu RU e coloque a captura de dela. 
 
Solução do aluno (algoritmo): 
 
#include <stdlib.h> 
#include <stdio.h> 
#include <locale.h> 
#include <string.h> 
 
// Dados do ALuno 
typedef struct 
{ 
 int ruAluno; 
 char nome[50]; 
 char email[50]; 
}dadosAluno; 
 
// Tabela hash do tipo dadosAluno 
dadosAluno tabelaHash[M]; 
 
 
// Função de inicialização a tabela com dados. 
void inicializarTabela() 
{ 
 int i; 
 for (i = 0; i < 10; i++) 
 { 
 tabelaHash[1].ruAluno = 888888; 
 tabelaHash[1].nome = "João das Neves"; 
 tabelaHash[1].email = "joaoneves@gmail.com"; 
 
 
 
 
 tabelaHash[2].ruAluno = 123456; 
 tabelaHash[2].nome = "Luke Skywalker"; 
 tabelaHash[2].email = "starwars@gmail.com"; 
 tabelaHash[3].ruAluno = 654321; 
 tabelaHash[3].nome = "Super Mario Bros"; 
 tabelaHash[3].email = "nintendo@gmail.com"; 
 tabelaHash[4].ruAluno = 135791; 
 tabelaHash[4].nome = "Frodo Baggins"; 
 tabelaHash[4].email = "lotr@gmail.com"; 
 tabelaHash[5].ruAluno = 246802; 
 tabelaHash[5].nome = "Harry Potter"; 
 tabelaHash[5].email = "hp@gmail.com"; 
 tabelaHash[6].ruAluno = 987654; 
 tabelaHash[6].nome = "Ronaldinho Gaucho"; 
 tabelaHash[6].email = "futebol@gmail.com"; 
 tabelaHash[7].ruAluno = 654321; 
 tabelaHash[7].nome = "Airton Senna"; 
 tabelaHash[7].email = "mclaren@gmail.com"; 
 tabelaHash[8].ruAluno = 321654; 
 tabelaHash[8].nome = "Fausto Silva"; 
 tabelaHash[8].email = "domingao@gmail.com"; 
 tabelaHash[9].ruAluno = 789456; 
 tabelaHash[9].nome = "Silvio Santos"; 
 tabelaHash[9].email = "sbt@gmail.com"; 
 tabelaHash[10].ruAluno = 951753; 
 tabelaHash[10].nome = "Joao das Couves"; 
 tabelaHash[10].email = "fruteira@gmail.com"; 
 } 
} 
 
// função para gerar um código hash para cada elemento da tabela. 
int criarCodigoHash(int numeroRU) 
{ 
 return numeroRU % M; 
} 
 
// função para procurar um aluno na tabela 
dadosAluno* procurar(int numeroRU) 
{ 
 int indice = criarCodigoHash(numeroRU); 
 while (tabelaHash[indice].ruAluno != -1) 
 { 
 if (tabelaHash[indice].ruAluno == numeroRU) 
 { 
 return &tabelaHash[indice]; 
 } 
 else 
 { 
 indice = criarCodigoHash(indice + 1); 
 } 
 } 
 return NULL; 
} 
 
//função principal 
int main() 
{ 
 dadosAluno* Aluno; 
 float ru_aluno = 1; 
 
 inicializarTabela(); // inicializa a tabela com os índices para cada aluno. 
 
 
 
 
 
 // menu inicial 
 while (ru_aluno =!0) { 
 system("cls"); 
 printf("SISTEMA DE CONSULTA DE ALUNOS DA UNINTER\n\n"); 
 printf("Digite o RU do aluno que deseja consultar ou zero (0) para sair"); 
 scanf_s("%d", ru_aluno); 
 
 printf("%d", ru_aluno); 
 
 if (ru_aluno = 0) { 
 break; 
 } else { 
 //chama a funcao para procurar aluno 
 Aluno = procurar(ru_aluno); 
 if (Aluno) 
 { 
 printf("\nRU:\t%d\n", Aluno->ruAluno); 
 printf("Nome:\t%s", Aluno->nome); 
 printf("E-mail:\t%s", Aluno->email); 
 printf("\n"); 
 system("pause"); 
 } 
 else 
 {printf("\nRU nao encontrado!\n"); 
 system("pause"); 
 } 
 } 
 } 
 return 0; 
 
Solução do aluno (Tela):

Outros materiais