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 10 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 10 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 9, do total de 10 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

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

Outros materiais