Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estruturas Dados II (2021-2). Prof. Dr. Engo. Carlos A. Sicsú A. do Nascimento Trabalho obrigatório para A1 Valor: até 5.0pts da Atividade Individual Avaliativa (AIA) de A1. Trabalho em Grupo (Grupos definidos pelo Canvas). Data Limite de envio pelo Sistema Canvas: 07/10/2021 – 23:59hs. O arquivo deverá ser entregue em documento do Word, conforme este modelo disponibilizado. Matrícula: 20182102912 Nome Completo: Carlos Frederico Pinto da Silva Matrícula: 20192100759 Nome Completo: Gabriel Amorim de Ceia Matrícula: 20201102251 Nome Completo: Lariza Medeiros Gonçalves Matrícula: 20171102842 Nome Completo: Patrícia do Nascimento Pereira Matrícula: 20131105867 Nome Completo: Eduardo dos Santos Albernaz Matrícula: 20161105060 Nome Completo: João Pedro Santos Lopes · Trabalho prático 1 (1.5pt): Crie uma fila de prioridade em um vetor, de estruturas com a idade e o nome de um grupo de 10 pessoas (struct), onde as prioridades devem ser definidas inicialmente como -1 (não definida, elemento não inserido), através da idade da pessoa (prioridade). A prioridade deve ser pela maior idade e será necessário percorrer todo o vetor para identificar o elemento a ser retirado. Ao retirar, deve-se exibir a idade e o nome da pessoa e o elemento no vetor deverá receber -1 para liberar o local para novo armazenamento. · Funcionalidades: 1. Inserir elemento em um local vazio (idade= -1); 2. Remover elemento, remover o elemento de maior prioridade, liberar o elemento do vetor indicando a idade = -1 e exibir a idade e o nome da pessoa; 3. Listar na ordem do vetor para podermos ver as prioridades (idade) e o nome das pessoas (não exibir elementos tenham idade = -1). 1. Apresente o código fonte da aplicação; Fonte Fila Prioridade #include <stdio.h> #include <stdlib.h> #include <string.h> #include "FilaPrioridade.h" //inclui os Protótipos struct pessoa{ char nome[50]; int idade; }; struct fila_prioridade { int qtd; struct pessoa dados[MAX]; }; FilaPrio* cria_FilaPrio(){ FilaPrio *fp; fp = (FilaPrio*) malloc(sizeof(struct fila_prioridade)); if(fp != NULL) fp->qtd = 0; return fp; } void libera_FilaPrio(FilaPrio* fp){ free(fp); } int consulta_FilaPrio(FilaPrio* fp, char* nome){ if(fp == NULL || fp->qtd == 0) return 0; strcpy(nome,fp->dados[fp->qtd-1].nome); return 1; } int insere_FilaPrio(FilaPrio* fp, char *nome, int idade){ if(fp == NULL) return 0; if(fp->qtd == MAX)//fila cheia return 0; int i = fp->qtd-1; while(i >= 0 && fp->dados[i].idade >= idade){ fp->dados[i+1] = fp->dados[i]; i--; } strcpy(fp->dados[i+1].nome,nome); fp->dados[i+1].idade = idade; fp->qtd++; return 1; } int remove_FilaPrio(FilaPrio* fp){ if(fp == NULL) return 0; if(fp->qtd == 0) return 0; fp->qtd--; return 1; } int tamanho_FilaPrio(FilaPrio* fp){ if(fp == NULL) return -1; else return fp->qtd; } int estaCheia_FilaPrio(FilaPrio* fp){ if(fp == NULL) return -1; return (fp->qtd == MAX); } int estaVazia_FilaPrio(FilaPrio* fp){ if(fp == NULL) return -1; return (fp->qtd == 0); } void imprime_FilaPrio(FilaPrio* fp){ if(fp == NULL) return; int i; for(i=fp->qtd-1; i >=0 ; i--){ printf("Idade: %d \tNome: %s\n",fp->dados[i].idade,fp->dados[i].nome); } } Fonte Main #include <stdio.h> #include <stdlib.h> #include "FilaPrioridade.h" int main(){ int i, op, idade; int on; char nome[40]; on = 1; FilaPrio* fp; fp = cria_FilaPrio(); insere_FilaPrio(fp, "Andre", 33); insere_FilaPrio(fp, "Bianca", 22); insere_FilaPrio(fp, "Carlos", 40); insere_FilaPrio(fp, "Douglas", 19); insere_FilaPrio(fp, "Erick", 26); insere_FilaPrio(fp, "Fabricio", 17); insere_FilaPrio(fp, "Gabriel", 18); insere_FilaPrio(fp, "Felipe", 27); insere_FilaPrio(fp, "Enzo", 13); insere_FilaPrio(fp, "Miguel", 49); do { printf(" ----- SF - Trabalho 1 ----- \n\n"); printf("\n1 - Inserir pessoa\n"); printf("2 - Remover próximo da fila\n"); printf("3 - Imprimir Fila ordenada\n"); printf("0 - Sair\n\n"); scanf("%d", &op); switch(op) { case 1: printf("\nInforme o nome: "); scanf("%s", nome); printf("\nInforme a idade: "); scanf("%d", &idade); insere_FilaPrio(fp, nome, idade); break; case 2: remove_FilaPrio(fp); break; case 3: printf("\n"); imprime_FilaPrio(fp); printf("\n"); break; case 0: on = 0; } } while (on == 1); libera_FilaPrio(fp); system("pause"); return 0; } 2. Apresente as sequências de capturas de tela (prints) dos testes. É fundamental apresentar o funcionamento do programa. Exemplo de captura de tela (print): · Trabalho prático 2 (1.75pt): 3. Crie uma lista de prioridades classificada pela prioridade ordenada pela maior prioridade, utilizando a idade da pessoa e nome (estrutura), com todas as funcionalidades. 1. Apresente o código fonte da aplicação; Fonte Fila Prioridade #include <stdio.h> #include <stdlib.h> #include <string.h> #include "FilaPrioridade.h" //inclui os Protótipos struct pessoa{ char nome[50]; int idade; }; struct fila_prioridade{ int qtd; struct pessoa dados[MAX]; }; FilaPrio* cria_FilaPrio(){ FilaPrio *fp; fp = (FilaPrio*) malloc(sizeof(struct fila_prioridade)); if(fp != NULL) fp->qtd = 0; return fp; } void libera_FilaPrio(FilaPrio* fp){ free(fp); } int consulta_FilaPrio(FilaPrio* fp, char* nome){ if(fp == NULL || fp->qtd == 0) return 0; strcpy(nome,fp->dados[fp->qtd-1].nome); return 1; } int insere_FilaPrio(FilaPrio* fp, char *nome, int idade){ if(fp == NULL) return 0; if(fp->qtd == MAX)//fila cheia return 0; int i = fp->qtd-1; while(i >= 0 && fp->dados[i].idade >= idade){ fp->dados[i+1] = fp->dados[i]; i--; } strcpy(fp->dados[i+1].nome,nome); fp->dados[i+1].idade = idade; fp->qtd++; return 1; } int remove_FilaPrio(FilaPrio* fp){ if(fp == NULL) return 0; if(fp->qtd == 0) return 0; fp->qtd--; return 1; } int tamanho_FilaPrio(FilaPrio* fp){ if(fp == NULL) return -1; else return fp->qtd; } int estaCheia_FilaPrio(FilaPrio* fp){ if(fp == NULL) return -1; return (fp->qtd == MAX); } int estaVazia_FilaPrio(FilaPrio* fp){ if(fp == NULL) return -1; return (fp->qtd == 0); } void imprime_FilaPrio(FilaPrio* fp){ if(fp == NULL) return; int i; for(i=fp->qtd-1; i >=0 ; i--){ printf("Idade: %d \tNome: %s\n",fp->dados[i].idade,fp->dados[i].nome); } } Fonte Main #include <stdio.h> #include <stdlib.h> #include "FilaPrioridade.h" int main(){ int i, op, idade; int on; char nome[40]; on = 1; FilaPrio* fp; fp = cria_FilaPrio(); insere_FilaPrio(fp, "Andre", 33); insere_FilaPrio(fp, "Bianca", 22); insere_FilaPrio(fp, "Carlos", 40); insere_FilaPrio(fp, "Douglas", 19); insere_FilaPrio(fp, "Erick", 26); insere_FilaPrio(fp, "Fabricio", 17); insere_FilaPrio(fp, "Gabriel", 18); do { printf("\t ----- SF - Sistema de Fila ----- \n\n"); printf("\n\t1 - Inserir pessoa\n"); printf("\t2 - Remover próximo da fila\n"); printf("\t3 - Imprimir Fila ordenada\n"); printf("\t0 - Sair\n\n"); scanf("%d", &op); switch(op) { case 1: printf("\nNome: "); scanf("%s", nome); printf("\nIdade: "); scanf("%d", &idade); insere_FilaPrio(fp, nome, idade); break; case 2: remove_FilaPrio(fp); break; case 3: printf("\n"); imprime_FilaPrio(fp); printf("\n"); break; case 0: on = 0; } } while (on == 1); libera_FilaPrio(fp); system("pause");return 0; } 2. Apresente as sequências de capturas de tela (prints) dos testes. É fundamental apresentar o funcionamento do programa. Exemplo de captura de tela (print): Trabalho prático 3 (1.75pt): 4. Crie uma lista de prioridades classificada pela prioridade ordenada pela menor prioridade, utilizando a idade da pessoa e nome (estrutura), com todas as funcionalidades. 3. Apresente o código fonte da aplicação; Fonte Fila Prioridade #include <stdio.h> #include <stdlib.h> #include <string.h> #include "FilaPrioridade.h" //inclui os Protótipos struct pessoa{ char nome[50]; int idade; }; struct fila_prioridade{ int qtd; struct pessoa dados[MAX]; }; FilaPrio* cria_FilaPrio(){ FilaPrio *fp; fp = (FilaPrio*) malloc(sizeof(struct fila_prioridade)); if(fp != NULL) fp->qtd = 0; return fp; } void libera_FilaPrio(FilaPrio* fp){ free(fp); } int consulta_FilaPrio(FilaPrio* fp, char* nome){ if(fp == NULL || fp->qtd == 0) return 0; strcpy(nome,fp->dados[fp->qtd-1].nome); return 1; } int insere_FilaPrio(FilaPrio* fp, char *nome, int idade){ if(fp == NULL) return 0; if(fp->qtd == MAX)//fila cheia return 0; int i = fp->qtd-1; while(i >= 0 && fp->dados[i].idade < idade){ fp->dados[i+1] = fp->dados[i]; i--; } strcpy(fp->dados[i+1].nome,nome); fp->dados[i+1].idade = idade; fp->qtd++; return 1; } int remove_FilaPrio(FilaPrio* fp){ if(fp == NULL) return 0; if(fp->qtd == 0) return 0; fp->qtd--; return 1; } int tamanho_FilaPrio(FilaPrio* fp){ if(fp == NULL) return -1; else return fp->qtd; } int estaCheia_FilaPrio(FilaPrio* fp){ if(fp == NULL) return -1; return (fp->qtd == MAX); } int estaVazia_FilaPrio(FilaPrio* fp){ if(fp == NULL) return -1; return (fp->qtd == 0); } void imprime_FilaPrio(FilaPrio* fp){ if(fp == NULL) return; int i; for(i=fp->qtd-1; i >=0 ; i--){ printf("Idade: %d \tNome: %s\n",fp->dados[i].idade,fp->dados[i].nome); } } Fonte Main #include <stdio.h> #include <stdlib.h> #include "FilaPrioridade.h" int main(){ int i, op, idade; int on; char nome[40]; on = 1; FilaPrio* fp; fp = cria_FilaPrio(); insere_FilaPrio(fp, "Andre", 33); insere_FilaPrio(fp, "Bianca", 22); insere_FilaPrio(fp, "Carlos", 40); insere_FilaPrio(fp, "Douglas", 19); insere_FilaPrio(fp, "Erick", 26); insere_FilaPrio(fp, "Fabricio", 17); insere_FilaPrio(fp, "Gabriel", 18); do { printf("\t ----- SF - Sistema de Fila ----- \n\n"); printf("\n\t1 - Inserir pessoa\n"); printf("\t2 - Remover próximo da fila\n"); printf("\t3 - Imprimir Fila ordenada\n"); printf("\t0 - Sair\n\n"); scanf("%d", &op); switch(op) { case 1: printf("\nNome: "); scanf("%s", nome); printf("\nIdade: "); scanf("%d", &idade); insere_FilaPrio(fp, nome, idade); break; case 2: remove_FilaPrio(fp); break; case 3: printf("\n"); imprime_FilaPrio(fp); printf("\n"); break; case 0: on = 0; } } while (on == 1); libera_FilaPrio(fp); system("pause"); return 0; } 4. Apresente as sequências de capturas de tela (prints) dos testes. É fundamental apresentar o funcionamento do programa. Exemplo de captura de tela (print): Prof. Dr. Engo. Carlos A. Sicsú A. do Nascimento
Compartilhar