Buscar

Atividade Individual Avaliativa EstruturaDados2(AIA_A1)(2021-2)-1

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

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

Outros materiais