Baixe o app para aproveitar ainda mais
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):
Compartilhar