Baixe o app para aproveitar ainda mais
Prévia do material em texto
· 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á 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 do aluno: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> struct ListaArtista { char musica[50], artista[50]; float duracao; struct ListaArtista* prox; }; struct ListaArtista* inicio, * meio, * fim, * aux; void inserirMusica() { int c; struct ListaArtista* novo; novo = (struct ListaArtista*)malloc(sizeof(struct ListaArtista)); printf("\nSelecione a musica"); fgets(novo->musica, 49, stdin); printf("De qual artista? "); fgets(novo->artista, 49, stdin); printf("Duracao da musica? "); scanf_s("%f", &novo->duracao); fflush(stdin); // Limpar buffer do teclado novo->prox = NULL; if (inicio == NULL) //A Fila esta vazia e iremos inserir o primeiro elemento { inicio = fim = novo; } else { fim->prox = novo; fim = novo; } } void LimparLista() { char ch; if (inicio == NULL) { printf("\nLista\n"); } else { printf("s/n "); ch = getchar(); if (ch == 's' || ch == 'S') { while (inicio != NULL) { aux = inicio; inicio = inicio->prox; free(aux); // Limpa o espaco da memoria } printf("\nLista vazia\n"); } } } void VizualizarLista() { aux = inicio; if (inicio == NULL) { printf("\n Lista vazia!"); } else { while (aux != NULL) { printf("musica:%s", aux->musica); printf("artista: %s", aux->artista); printf("duracao: %f\n\n", aux->duracao); aux = aux->prox; } } printf("\n"); } void ProcurarMusica() { aux = inicio; if (inicio == NULL) { printf("\nLista vazia"); } else { char musica[50]; printf("Digite a faixa: "); scanf_s("%s", &aux); while (aux != NULL) { if (musica == aux->musica) { printf("\n Musica %s encontrada\n", aux->musica); printf("musica %s", aux->musica); printf("cantor:%s\n", aux->artista); return; } else { aux = aux->prox; } } if (aux == NULL) { printf("\nMusica %s não encontrada!", musica); } } printf("\n"); } int main() { setlocale(LC_ALL, ""); int opc, c; do { printf("1.Inserir música\n"); printf("2.Procuar música\n"); printf("3.Vizualizar lista\n"); printf("4.Limpar lista\n"); printf("5.Sair\n"); printf("Escolha o opção!"); scanf_s("%d", &opc); fflush(stdin); switch (opc) { case 1: inserirMusica(); system("pause"); break; case 2: ProcurarMusica(); system("pause"); break; case 3: VizualizarLista(); system("pause"); break; case 4: LimparLista(); system("pause"); break; case 5: exit; break; default: printf("Opcão incorreta!"); break; } system("cls"); } while (opc != 5); return 0; } · 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. 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> #include<stdlib.h> #include<string.h> #include<locale.h> typedef struct aluno { // Cria uma STRUCT para armazenar os dados do alunos char nome[100]; char email[100]; int ru; struct aluno* prox; } troca; troca* inicia = NULL; int opc; void cadas();// chamada das funcoes void pesqui(); int main(int argc, char* argv[]) { setlocale(LC_ALL, "Portuguese"); do { // para o painel aparece na tela com switch estruturado com comando a escolha system("cls"); printf("\||=======================||\n"); printf("\|| Escolha uma opção || \n"); printf("\|| 1. Cadastrar Aluno: || \n"); printf("\|| 2. Pesquisar Aluno: || \n"); printf("\||=======================|| \n"); scanf_s("%d", &opc); switch (opc) { case 1: cadas();// chamada das funcao cadastro break; case 2: pesqui();// chamada das funcao pesquisa break; default: printf("\nDigite outra opção.\n"); break; } } while (opc != 3); } void liberarmemoria() //Função liberamemoria { troca* prox_troca; while (inicia != NULL) { prox_troca = inicia; inicia = prox_troca->prox; free(prox_troca); } } void cadas() { // Função cadastro int conti; troca* prox_troca; if (inicia == NULL) { inicia = (troca*)malloc(sizeof(troca)); inicia->prox = NULL; if (inicia == NULL) exit(1); } prox_troca = inicia; while (1) { // Lista os usuarios cadastrados. printf("RU: \n"); scanf_s("%d", &prox_troca->ru); printf("\Digite o Nome: \n"); scanf_s("%s", &prox_troca->nome, 100); printf("\Digite o email:\n"); scanf_s("%s", &prox_troca->email, 100); printf("\Novo Cadastro?(1)SIM e (0)NÁO: "); scanf_s("\n %d", &conti); if (conti == 0) break; prox_troca->prox = (troca*)malloc(sizeof(troca)); prox_troca = prox_troca->prox; prox_troca->prox = NULL; } printf("\n"); } void pesqui() { //Função pesquisa int rux; char nomeax[100]; troca* prox_troca; do { printf("\nDigite seus dados para pesquisa: \n1 RU: \n2 Nome:\n0 para sair\n"); scanf_s("%d", &opc); if (opc == 0) break; prox_troca = inicia; switch (opc) { case 1: printf("\nDigite o RU do Aluno:\n"); scanf_s("%d", &rux); while (prox_troca != NULL) { if (prox_troca->ru == rux) { printf("\nRu:%d\nNome:%s\nemail:%s\n", prox_troca->ru, prox_troca->nome, prox_troca->email); break; } prox_troca = prox_troca->prox; } break; case 2: printf("\nDigite o nome do Aluno:\n"); scanf_s("%s", nomeax, 100); while (prox_troca != NULL) { if (strcmp(prox_troca->nome, nomeax) == 0) { printf("\nru:%d\nNome:%s\nemail:%s\n", prox_troca->ru, prox_troca->nome, prox_troca->email); break; } prox_troca = prox_troca->prox; } break; default: printf("\nDigite outra opçâo.\n"); break; } } while (1); }
Compartilhar