Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. 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; Utilize como base o código de listas da AULA PRÁTICA 2 da disciplina. Código está disponível no Github do professor. O link está na aula prática 2;. Solução: #include<stdio.h> #include<stdlib.h> int menu(); //função do menu void inserir(); //função inserir void listar();//função listar struct Lista { //estrutura heterogênea de dados char musica[50], artista[50]; float duracao; struct Lista* prox; }*Head; int main() { int continuar = 1; Head = NULL; do { printf("1.Inserir no inicio da lista \n"); printf("2.Listar\n"); printf("0.Sair\n"); scanf_s("%d", &continuar); system("cls || clear"); //sempre limpar switch (continuar) { case 1: inserir(); break; case 2: listar(); break; case 0: return 0; break; default: printf("Digite uma opcao valida \n"); } } while (continuar); } int menu() { int op, c; system("Cls"); printf("1.Inserir no inicio da lista \n"); printf("2.Listar\n"); printf("0.Sair\n"); printf("Digite sua escolha: "); scanf_s("%d", &op); while ((c = getchar()) != '\n' && c != EOF) {} // limpar o buffer do teclado. system("Cls"); return op; } void inserir() { Lista* NovoElemento; NovoElemento = (struct Lista*)malloc(sizeof(struct Lista)); // aloca espaço para um bloco printf("\nInserir nome da musica:"); scanf_s("%s", NovoElemento->musica); system("Cls"); printf("\nInserir nome do artista:"); scanf_s("%s", NovoElemento->artista); system("Cls"); printf("Inserir duracao da musica?"); scanf_s("%f", &NovoElemento->duracao); system("Cls"); if (Head == NULL) //se nulo insere na primeira posição { Head = NovoElemento; Head->prox = NULL; } else {//move o head para o proximo e inserir o novo na primeira prosição NovoElemento->prox = Head; Head = NovoElemento; } } void listar() { //listar Lista* ElementoVarredura; ElementoVarredura = (struct Lista*)malloc(sizeof(struct Lista)); ElementoVarredura = Head; if (ElementoVarredura == NULL) { printf("\n Lista vazia!"); return; } while (ElementoVarredura != NULL) { while (ElementoVarredura != NULL) { printf("musica:%s\n", ElementoVarredura->musica); printf("artista: %s\n", ElementoVarredura->artista); printf("duracao: %f\n", ElementoVarredura->duracao); ElementoVarredura = ElementoVarredura->prox; } } printf("\n"); system("pause"); system("cls || clear"); return; } Imagem do código funcionando no seu computador: · menu · inserir · Listar 2.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. Utilizei a Lista simples não circular pois atendia o exercício abordado, a lista encadeada oferece operações de acesso geral, tais como inserção, remoção e busca Solução: #include<stdio.h> #include<stdlib.h> #include <string.h> int menu(); //função do menu void adicionarAluno(struct Lista* Lista, char* nome, char* email, int ru, int posicao); struct Lista* CriarLista(int qtd); void buscar(struct Lista* Lista); struct Aluno { //estrutura heterogênea de dados char nome[50], email[50]; int ru; struct Aluno* prox; }; struct Lista { //Lista de alunos int qtd; struct Aluno** total; }; struct Lista* CriarLista(int qtd); void adicionarAluno(struct Lista* Lista, char *nome, char *email, int ru, int posicao); int main() { //Deve-se armazenar o nome do aluno, seu e-mail e seu RU. Para o armazenamento utilize uma estrutura heterogênea de dados Lista* ListaTemp = CriarLista(10); char nome1[20] = "joao"; char email1[20] = "joao@email"; char nome2[20] = "maria"; char email2[20] = "maria@email"; char nome3[20] = "Leonardo"; char email3[20] = "leonardo@email"; char nome4[20] = "paulo"; char email4[20] = "paulo@email"; char nome5[20] = "jonas"; char email5[20] = "jonas@email"; char nome6[20] = "marcia"; char email6[20] = "marcia@email"; char nome7[20] = "miriam"; char email7[20] = "miriam@email"; char nome8[20] = "cheetos"; char email8[20] = "cheetos@email"; char nome9[20] = "roberta"; char email9[20] = "roberta@email"; adicionarAluno(ListaTemp, nome1, email1, 111111,0); adicionarAluno(ListaTemp, nome2, email2, 222222,1); adicionarAluno(ListaTemp, nome3, email3, 1984254,2); adicionarAluno(ListaTemp, nome4, email4, 33333, 3); adicionarAluno(ListaTemp, nome5, email5, 34444, 4); adicionarAluno(ListaTemp, nome6, email6, 35555, 5); adicionarAluno(ListaTemp, nome7, email7, 36666, 6); adicionarAluno(ListaTemp, nome8, email8, 37777, 7); adicionarAluno(ListaTemp, nome9, email9, 38888, 8); int continuar = 1; do { printf("1.buscar \n"); printf("0.Sair\n"); scanf_s("%d", &continuar); system("cls || clear"); //sempre limpar switch (continuar) //menu { case 1: buscar(ListaTemp); break; case 0: return 0; break; default: printf("Digite uma opcao valida \n"); } } while (continuar); } struct Lista* CriarLista(int qtd) //inicializa a lista { Lista* Lista = (struct Lista*)malloc(sizeof(struct Lista)); Lista->qtd = qtd; Lista->total = (struct Aluno**)malloc(qtd * sizeof(struct Aluno*)); for (int i = 0; i < qtd; i++) Lista->total[i] = NULL; return Lista; } void adicionarAluno(struct Lista* Lista, char *nome, char *email, int ru, int posicao) { //adiciona alunos na lista struct Aluno* NovoElemento = (struct Aluno *)malloc(sizeof(structAluno)); strcpy_s(NovoElemento->nome,nome); strcpy_s(NovoElemento->email, email); NovoElemento->ru = ru; NovoElemento->prox = NULL; NovoElemento->prox = Lista->total[posicao]; Lista->total[posicao] = NovoElemento; } int menu() {//funcao menu int op, c; system("Cls"); printf("1.buscar \n"); printf("0.Sair\n"); printf("Digite sua escolha: "); scanf_s("%d", &op); while ((c = getchar()) != '\n' && c != EOF) {} // limpar o buffer do teclado. system("Cls"); return op; } void buscar(struct Lista* Lista) //funcao buscar { int num,c; printf("Digite o RU a ser buscado: "); scanf_s("%d", &num); while ((c = getchar()) != '\n' && c != EOF) {} // sempre limpe o buffer do teclado. int v; for (v = 0; v < Lista->qtd; v++) { struct Aluno* ElementoVarredura = Lista->total[v]; while (ElementoVarredura != NULL) { if(ElementoVarredura->ru == num){ // mostra o aluno digitado na busca printf("nome: %s\n ", ElementoVarredura->nome); printf("email: %s\n ", ElementoVarredura->email); printf("ru: %d\n ", ElementoVarredura->ru); system("pause"); system("Cls"); } ElementoVarredura = ElementoVarredura->prox; } printf("\n"); } } Imagem do código funcionando no seu computador: 1
Compartilhar