Você está na página 1de 10

CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER

ESCOLA SUPERIOR POLITÉCNICA


TECNÓLOGO EM CIÊNCIA DE DADOS
DISCIPLINA DE ESTRUTURA DE DADOS

ATIVIDADE PRÁTICA

GABRIELLE FERNANDES DE CAMPOS – RU: 3532949


PROF. VINICIUS POZZOBON BORIN, ME.

MOGI DAS CRUZES – SÃO PAULO


2021
1 EXERCÍCIO 1

Exercício 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 estru-
tura 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 computa-
dor 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 op-
tado 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>
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" );

1
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 Li
sta));
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:


Exercício 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
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 correspondente do aluno e o e-mail deste contato. Caso não lo-
calize, 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

#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 armazena-
mento utilize uma estrutura heterogênea de dados
Lista* ListaTemp = CriarLista(10);

char nome1[20] = "augusto" ;


char email1[20] = "augusto@email";

char nome2[20] = "barbara";


char email2[20] = "barbara@ema il";

char nome3[20] = "gabrielle";


char email3[20] = "gabrielle@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] = "juliana";


char email8[20] = "juliana@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, 3532949, 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" );
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;
}
//adiciona alunos na lista
void adicionarAluno(struct Lista* Lista, char *nome, char *email, int ru, int
posicao)
{
struct Aluno* NovoElemento = ( struct Aluno *)malloc(sizeof(struct Aluno))
;
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("nom e: %s\n ", ElementoVarredura->nome);
printf("ema il: %s\n ", ElementoVarredura->email);
printf("ru: %d\n ", ElementoVarredura->ru);
system("pau se");
system("Cls ");
}
ElementoVarredura = ElementoVarredura->prox;
}
printf("\n");
}
}

Você também pode gostar