Prévia do material em texto
CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER ESCOLA SUPERIOR POLITÉCNICA GRADUAÇÃO ANALISE E DENSEVOLVIMENTO DE SISTEMA DISCIPLINA DE ESTRUTURA DE DADOS ATIVIDADE PRÁTICA LAECIO CARREIRO DE OLIVEIRA DE SOUZA – RU: 2932045 nome PROFESSOR: Vinicius Pozzobon Borin BALSAS-MARANHÃO 2020 1. EXERCÍCIO 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á implementar 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: #include <stdio.h> #include <stdlib.h> #include <string.h> struct Play_list { char musica[30];//VARIAVEL DA STRUCT QUE ARMAZENA O NOME DA MUSICA char Artista[30];//VARIAVEL DA STRUCT QUE ARMAZENA NO DO ARTISTA float duracao;//VARIAVEL DA STRUCT QUE ARMAZENA A DURACAO struct Play_list *proximo;//VARIAVEL DA STRUCT PARA TER O ENDEREÇO DA PROXIMA LISTA }; //FUNÇÃO QUE INICIALIZA A LISTA struct Play_list * cria(void) { return NULL; } //FUNCAO QUE INSERE NA LISTA O ENCADEADA SEUS RESPECTIVOS DADOS E SEU ENDEREÇO struct Play_list * insere(struct Play_list * l, char * musica, char * Artista, float duracao) { struct Play_list * novo = (struct Play_list *) malloc(sizeof(struct Play_list)); strcpy(novo->musica, musica); strcpy(novo->Artista, Artista); novo->duracao = duracao; novo->proximo = l; return novo; } //FUNCAO QUE IMPRIME OS VALORES DA LISTA void imprime(struct Play_list * l) { struct Play_list * p; for(p = l; p != NULL; p = p->proximo) { printf("Musica : %s \n", p->musica); printf("ARTISTA : %s \n", p->Artista); printf("Duracao : %.2f \n", p->duracao); } } //FUNCAO QUE BUSCA NA LISTA int busca(struct Play_list * l, char * musica) { struct Play_list * p; int i = 1; for (p = l; p != NULL; p = p->proximo) { if (strcmp(musica, p->musica) == 0) { printf("Musica: %s %s %s \n", p->musica); return i; } i++; } return 0; } main(){ char grupo[30], artista[30]; float duracao; struct Play_list * l; char resp = 's'; char procura[30]; //MENU ESTILIZADA DA PLAYER printf(" ************************ \n"); printf("| PLAYER |\n"); printf("| DE |\n"); printf("| MUSICAS |\n"); printf("| |\n"); printf(" ************************ \n"); printf("\n\n"); l = cria(); while (resp != 'n') { printf("Qual e a Musica? \n"); scanf("%[^\n]", grupo); fflush(stdin); printf("De quem e a musica? \n"); scanf("%[^\n]", artista); fflush(stdin); printf("Qual e o duracao? \n"); scanf("%f", &duracao); fflush(stdin); l = insere(l, grupo, artista, duracao); printf("Continua? s/n \n"); scanf("%c", &resp); fflush(stdin);’ } imprime(l); printf("Qual musica quer ouvir? \n"); scanf("%s", procura); //ATRIBUIR VALOR PROCURAR printf("Esta musica esta na posicao %d da play list\n", busca(l, procura)); system("pause"); } Imagem do código funcionando no computador: 1. Tela de cadastro 2. Exemplo de cadastro 1. EXERCÍCIO 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. Defina a estrutura de dados que você irá utilizar para fazer esta implementação e JUSTIFIQUE em texto porque você escolheu ela; 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 correspondente 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: #include<stdio.h> #define TAM 30 //padrao para os vetores #include <string.h> #include<stdlib.h> struct AVA{ char nome[40]; char email[40]; int ru; }; main(){ int count=0;//contador para saber a quantidade de registro na struct int i;//contador iterativo int op;//opcao a ser selecionado struct AVA a;//chamada da struct int buscar;//variavel de busca do{ printf("---- CADASTRO DE SISTEMA UNINTER no AVA----\n\n"); printf("1 - Cadastrar Alunos\n");//ações do menu para cadastrar contas printf("2 - Buscar Aluno\n");//ações do menu listar todas as contas printf("0 - Sair\n");//ações do menu sair printf("Opcao: "); scanf("%d", &op);//leitura da opcao selecionado switch(op){ //opcao de cadastro de contas do menu case 1: printf("\n-----CADASTRO de ALUNO-----\n"); printf("Digite o nome do aluno:"); fflush(stdin);//funcao para apagar o buffer do teclado fgets(a.nome,50,stdin); printf("Digite o e-mail: "); fflush(stdin);//funcao para apagar o buffer do teclado fgets(a.email,50,stdin); printf("Digite o RU: "); scanf("%d",&a.ru); count++; break; //opcao de listagem do menu case 2: printf("Digite o RU para a buscar: "); scanf("%d",&buscar); for(i=0;i<count;i++){ if(a.ru==buscar){ printf("\n-----Listar Contas-----\n"); printf("NOME DO ALUNO:%s\n",a.nome); printf("EMAIL DO ALUNO:%s\n",a.email); printf("\n-----############-----\n"); break; }else{ printf("\n-----Nenhum aluno encontrado-----\n"); break; } } break; case 0: op=0; break; }//Fim do switch printf("\n"); system("pause"); system("cls"); }while(op != 0); //FIM DO DO }//FIm do main Imagem do código funcionando no computador: 1