Buscar

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 13 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 13 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 13 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

CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER
ESCOLA SUPERIOR POLITÉCNICA
ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
ESTRUTURA DE DADOS
ATIVIDADE PRÁTICA
NOME ALUNO: GABRIEL PEREIRA DA FONSECA – RU: 3356131
NOME PROFESSOR: VINICIUS POZZOBON BORIN
CAXIAS DO SUL - RS
ANO DO PROJETO
2021
EXERCÍCIO 1
#include<stdio.h>
#include<stdlib.h> //adição das bibliotecas
#include <string.h>
#define _CRT_SECURE_NO_WARNINGS
//declaração de todas as funções
int menu();
void adicionarMusica(char t[40], char a[40], char al[40], char d[40]);
void imprimePlaylist();
//struct de dados da playlist
struct playlist {
char titulo[40];
char artista[40];
char duracao[40];
char album[40];
struct playlist *prox;
} *Head;
int main()
{
//declaração das variáveis, opção para escolha do menu e c para limpeza de buffer
int opcao, c;
char t[40], a[40], al[40], d[40];
// Head nulo
Head = NULL;
//Estrutura de repetição, executando até o usuário selecionar a opção de saída
while (1) {
//variável opcao referencia a função menu
opcao = menu();
// estrutura condicional para a variável opcao
switch (opcao) {
//caso digitado 1, inicia a inserção de dados na playlist
case 1:
printf("Digite o titulo da musica: ");
fgets(t, 40, stdin);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o nome do artista: ");
fgets(a, 40, stdin);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o album: ");
fgets(al, 40, stdin);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite a duracao da faixa: ");
fgets(d, 40, stdin);
adicionarMusica(t, a, al, d);
break;
//caso selecionado a opcao 2, imprime a playlist
case 2:
printf("Playlist: \n");
imprimePlaylist();
break;
// opcao de encerramento do programa
case 3:
return 0;
break;
// caso o usuário digite uma opção inválida
default:
printf("Opcao Invalida!\n");
}
}
}
// definição da função menu
int menu() {
int opcao, c;
//limpeza do promt
system("Cls");
printf("=============================================================\n");
printf("GABE MEDIA PLAYER\n");
printf("=============================================================\n");
printf("Menu:\n");
printf("1 - Adicionar Musica\n");
printf("2 - Listar Playlist\n");
printf("3 - Sair\n");
printf("Digite a opcao desejada: ");
scanf_s("%i", &opcao);
//limpeza de buffer
while ((c = getchar()) != '\n' && c != EOF) {}
system("Cls");
return opcao;
}
// funçao para adicionar musicas, com os parâmetros definidos
void adicionarMusica(char t[40], char a[40], char al[40], char d[40])
{
//criado novo elemento do tipo ponteiro para a struct playlist
struct playlist *nova;
//alocado espaço na memória para o novo elemento
nova = (struct playlist*)malloc(sizeof(struct playlist));
//realizado a cópia das informações contidas nas variaveis e direcionadas para seus
respectivos
//dados na struct
strcpy_s(nova->titulo, 40, t);
strcpy_s(nova->artista, 40, a);
strcpy_s(nova->album, 40, al);
strcpy_s(nova->duracao, 40, d);
//estrutura condicional para adicionar os elementos sempre no inicio da lista
if (Head == NULL)
{
Head = nova;
Head->prox = NULL;
}
else
{
nova->prox = Head;
Head = nova;
}
printf("Musica adicionada com sucesso!\n");
}
//definido a função para imprimir a playlist
void imprimePlaylist() {
struct playlist *ElementoVarredura;
ElementoVarredura = (struct playlist*)malloc(sizeof(struct playlist));
ElementoVarredura = Head;
if (ElementoVarredura == NULL) {
return;
}
while (ElementoVarredura != NULL) {
printf("Titulo: %s\n", ElementoVarredura->titulo);
printf("Artista: %s\n", ElementoVarredura->artista);
printf("Duracao: %s\n", ElementoVarredura->duracao);
printf("Album: %s\n", ElementoVarredura->album);
ElementoVarredura = ElementoVarredura->prox;
}
printf("\n");
system("pause");
return;
}
EXERCÍCIO 2
#include <stdlib.h> // adição das bibliotecas
#include <stdio.h>
#include <locale.h>
#include <string.h>
void inicializarTabela(); // função de espalhamento (resto da divisão do numeroRU por
M). Inicializa a tabela com o valor -1.
void inserir(); // função para inserir um aluno na tabela.
void listarTabela(); //funcao para listar todos os alunos da tabela.
int criarCodigoHash(int numeroRU); // função para gerar um código hash para cada
elemento da tabela.
#define M 11 // valor constante chamado "M" para representar o tamanho da tabela
// estrutura dadosAluno com nome, matrícula e email
typedef struct
{
int ruAluno;
char nome[50];
char email[50];
}dadosAluno;
// tabela hash do tipo dadosAluno
dadosAluno tabelaHash[M];
// função para ler e retornar os dados do aluno
dadosAluno lerdadosAluno()
{
dadosAluno Aluno;
printf("Digite o RU do aluno:\n");
scanf_s("%d", &Aluno.ruAluno);
scanf_s("%*c");
printf("Digite o nome do Aluno:\n");
fgets(Aluno.nome, 50 - 1, stdin);
printf("Digite o e-mail do Aluno:\n");
fgets(Aluno.email, 50 - 1, stdin);
printf("\nDados inseridos com sucesso!\n");
system("pause");
return Aluno;
}
// definida a função para a busca dos alunos
dadosAluno* procurar(int numeroRU)
{
int indice = criarCodigoHash(numeroRU);
while (tabelaHash[indice].ruAluno != -1)
{
if (tabelaHash[indice].ruAluno == numeroRU)
{
return &tabelaHash[indice];
}
else
{
indice = criarCodigoHash(indice + 1);
}
}
return NULL;
}
//função principal
int main()
{
setlocale(LC_ALL, "Portuguese"); // prepara o código para portugues BR.
int opcao, numeroRU;
dadosAluno* Aluno;
// inicializa a tabela com os índices para cada aluno
inicializarTabela(); // inicializa a tabela com os índices para cada aluno.
// menu de opções
do
{
system("cls");
printf("SISTEMA DE CADASTRO DE ALUNOS UNINTER\n\n");
printf("\tMENU PRINCIPAL\n\n");
printf("(1) - Inserir novo aluno\n");
printf("(2) - Procurar aluno por RU\n");
printf("(3) - Listar todos os alunos\n");
printf("(4) - Sair\n\n");
printf("Digite a opção:\n");
scanf_s("%d", &opcao);
switch (opcao)
{
case 1:
system("cls");
printf("SISTEMA DE CADASTRO DE ALUNOS UNINTER\n\n");
printf(" CADASTRO DE ALUNO\n\n");
// chamada da função de inserção de dados do aluno
inserir();
break;
case 2:
system("cls");
printf("SISTEMA DE CADASTRO DE ALUNOS UNINTER\n\n");
printf("\tMENU DE BUSCA\n\n");
printf("Digite o RU do aluno:\n");
scanf_s("%d", &numeroRU);
/
/ chama a função para procurar o ru, usando como parâmetro o ru informado.
Aluno = procurar(numeroRU);
if (Aluno)
{
printf("\nDados encontrados!\n");
printf("\nRU:\t%d\n", Aluno->ruAluno);
printf("Nome:\t%s", Aluno->nome);
printf("E-mail:\t%s", Aluno->email);
printf("\n");
system("pause");
}
else
{
printf("\nRU nao encontrado!\n");
system("pause");
}
break;
case 3:
listarTabela(); // chama a função para listagem dos alunos cadastrados.
break;
case 4:
system("cls"); // encerra o código.
printf("SAINDO!\n\n");
break;
default:
printf("Opção inválida!\n");
}
} while (opcao != 4); // fica no menu até que o usuário escolha sair
return 0;
}
// função de espalhamento (resto da divisão do numeroRU por M). Inicializa a tabela
com o valor -1.
void inicializarTabela()
{
int i;
for (i = 0; i < M; i++)
{
tabelaHash[i].ruAluno = -1;
}
}
// função para inserir um aluno na tabela.
void inserir()
{
dadosAluno alu = lerdadosAluno();
int indice = criarCodigoHash(alu.ruAluno);
while (tabelaHash[indice].ruAluno != -1)
{
indice = criarCodigoHash(indice + 1);
}
tabelaHash[indice] = alu;
}
//funcao para listar todos os alunos da tabela.
void listarTabela()
{
system("cls");
printf("CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER\n\n");
printf("\tALUNOS CADASTRADOS\n\n");
int i;
for (i = 0; i < M; i++)
{
if (tabelaHash[i].ruAluno != -1)
{
printf("RU:\t%d\n", tabelaHash[i].ruAluno);
printf("Nome:\t%s", tabelaHash[i].nome);
printf("E-mail\t%s\n", tabelaHash[i].email);
}
}
printf("\n");
system("pause");
}
// função para gerar um código hash para cada elemento da tabela.
int criarCodigoHash(int numeroRU)
{
return numeroRU % M;
}

Continue navegando