- Criar a coleção (Prguntando ao usuário o tamanho máximo).
- Inserir um valor inteiro perguntando ao usuário.
- Perguntar ao usuário o valor inteiro e remover.
- Perguntar ao usuário um valor inteiro e retornar sim ou não se ele existe na coleção.
- Destruir a coleção.
===================
index.c
===================
//Este programa contém a função de criar uma coleção TAD
//Desenvolvido por: Kássio Rômulo Lima Sousa CP09126-81
// Núbia Cristine Silveira dos Santos CP09142-81.
//Setembro/2010
#define TAMANHONOME 40
#define FALSE 0
#define TRUE 1
#include <stdio.h>
#include "colecao.h"
struct colaluno{
char nome[TAMANHONOME];
int codigo;
int nascimento;
};
Colecao *c;
int comp(void * a, void* b){
int *pa;
Aluno *pb;
pa = (int*)a;
pb = (Aluno*)b;
if(*pa == pb -> codigo){
return TRUE;
}
else return FALSE;
}
int main(void){
int max_itens, codigo, nascimento, Key, Key2;
char opcao;
Aluno *a, *b;
printf("_______________________________\n");
printf("| UFMA |\n");
printf("| Kassio Romulo - CP09126-81 |\n");
printf("| Nubia Cristine - CP09142-81 |\n");
printf("|_____________________________|\n");
getch();
printf("\n 1: Criar Colecao. \n 0: Sair.");
printf("\tOpcao: ");
while(opcao != '0'){
scanf("%s", &opcao);
switch(opcao){
case '1':
printf("\nTamanho maximo da colecao: ");
scanf("%d", &max_itens);
c = colCriar(max_itens);
printf("\n 2: Inserir dados de Alunos. \n 0: Sair. \nOpcao: ");
break;
case '2':
a = (Aluno*)malloc(sizeof(Aluno));
printf("\n Nome: ");
getchar();
scanf("%s", a->nome);
printf(" Codigo: ");
scanf("%d", &(a->codigo));
printf(" Ano de Nascimento: ");
scanf("%d", &(a->nascimento));
colInserir(c , (void*)a);
printf("\n 2: Inserir dados de Alunos.\n 3: Buscar Aluno.\n 4: Destruir Colecao.\n 5: Remover cadastro\n 0: Sair.\n Opcao:");
break;
case '3':
printf("\n Entre com o codigo do aluno:");
scanf(" %d", &Key);
a = colBuscar(c, (void*)&Key, comp);
printf("\n Nome:%s", a->nome);
printf(" Codigo:%d\n", a->codigo);
printf(" Ano de Nascimento:%d\n", a->nascimento);
printf("\n 2: Inserir dados de Alunos.\n 3: Buscar Aluno.\n 4: Destruir Colecao.\n 5: Remover cadastro\n 0: Sair.\n Opcao:");
break;
case '4':
colDestruir(c);
printf("\n 1: Criar Nova Colecao. \n 0: Sair. \n Opcao:");
break;
case '5':
printf("\n Entre com o codigo do aluno:");
scanf(" %d", &Key2);
b = colretirar(c, Key2, comp);
if(b != NULL){
printf("\n Sucesso!\n\n", b);
}
printf("\n 2: Inserir dados de Alunos.\n 3: Buscar Aluno.\n 4: Destruir Colecao.\n 5: Remover cadastro\n 0: Sair.\n Opcao:");
break;
}
}
}
=====================
colecao.c
=====================
//Este programa contém a função de criar uma coleção, e criar formulários, retirar, buscar, e destruir
//Desenvolvido por: Kássio Rômulo Lima Sousa CP09126-81
// Núbia Cristine Silveira dos Santos CP09142-81.
//Setembro/2010
#define __COLECAO_C_
#define FALSE 0
#define TRUE 1
#include <stdio.h> /* Biblioteca Padrão */
#include <assert.h> /* Afirmacoes de verificacao de pré condicao */
#include "colecao.h" /* Inclui as especificações do TAD */
#include <stdlib.h> /* Biblioteca Padrão */
struct _colecao_ {
int numItens; /* numero de itens na colecao */
int maxItens; /* tamanho máximo da colecao */
void **itens; /* vetor com os itens */
};
/*----------------------------- colCriar -----------------------------------------
Constroi uma nova colecao pedida pelo usuário
--------------------------------------------------------------------------------
condicao Inicial: (maxItens > 0)
Retorno da função: retorna um ponteiro para uma colecao vazia ou NULL em caso de erro
--------------------------------------------------------------------------------*/
Colecao* colCriar(int max){
Colecao *c;
if ( max > 0 ){ // Testa Condição Inicial
c = (Colecao*)malloc(sizeof(Colecao)); // Se for verdadeira aloca espaço para a coleção
}
if(!c){
printf("** Erro: Memoria Insuficiente **"); // Se der erro e "c" não for verdadeiro, retorna erro!
getch();
exit (1);
}
if( c != NULL ){
c -> itens = (void**)malloc(sizeof(void*)); //Se "c" for verdadeiro aloca espaço para Itens
if ( c-> itens != NULL ){ // Se Itens for verdadeiro
c->maxItens = max;
c->numItens = 0;
return c;
}
}
return NULL;
}
/*------------------------------- colInserir -------------------------------------
Adiciona um item há colecao
--------------------------------------------------------------------------------
Condição Inicial: c é uma coleçao criada por uma chamada a colCriar e numItens < maxItens
Retorno da Função: item é adicionado há colecao
--------------------------------------------------------------------------------*/
int colInserir( Colecao *c, void *dado){
if ( c!= NULL){
if(c->numItens < c-> maxItens){
c->itens [c->numItens] = dado;
c->numItens++;
return TRUE;
}
}
else return FALSE;
}
/*--------------------------------- colBuscar ------------------------------------
Encontra um item na coleção
--------------------------------------------------------------------------------
Condição Inicial: c é uma coleção criada por uma chamada a colCriar
Retorno da função: retorna a posicao do item identificado por key se ele existir, ou
FALSE caso contrario
--------------------------------------------------------------------------------*/
void* colBuscar(Colecao* c, void* Key, int comp(void*, void*)){
int i=0;
if(c != NULL){
if(c->numItens > 0){
while((comp(Key, c->itens[i]) != TRUE) && (i < (c->numItens))){
i++;
}
if((comp(Key,c->itens[i])) == TRUE){
return c->itens[i];
}
else return FALSE;
}
}
}
/*--------------------------------- colRetirar ------------------------------------
Retira um item da coleção
--------------------------------------------------------------------------------
Condição Inicial: c é uma coleção criada por uma chamada a colCriar
Retorno da função: retorna a posicao do item identificado por key se ele existir, ou
FALSE caso contrario
--------------------------------------------------------------------------------*/
void* colretirar(Colecao* c, void* Key2, int comp(void*, void*)){
int i=0, j=0;
if(c != NULL){
if(c -> numItens > 0){
while((comp(Key2,c->itens[i]) != TRUE) && (i < (c->numItens))){
i++;
}
if(comp(Key2,c->itens[i])==TRUE){
free(c->itens[i]);
for(j = i ; j < c->numItens ; j++){
c->itens[j] = c->itens[j+1];
}
c->numItens--;
}
}
}else return NULL;
}
/*------------------------------- colDestruir ------------------------------------
Destroi uma colecao
--------------------------------------------------------------------------------
Condição Inicial: c é uma coleção criada por uma chamada a colCriar
Retorno da função: libera a memória alocada pela colecao
--------------------------------------------------------------------------------*/
int colDestruir(Colecao *c){
register int i;
if(c!=NULL){
if(c->numItens > 0){
for(i=0;i < c->numItens;i++){
free(c->itens[i]);
}
}
free(c->itens);
free(c);
printf("\n Colecao Destruida com sucesso!! \n");
return TRUE;
}
else{
printf("\n Erro ao tentar destruir colecao!");
return FALSE;
}
}
======================
colecao.h
=====================
//Este programa contém a função de criar uma coleção, e criar formulários, retirar, buscar, e destruir
//Desenvolvido por: Kássio Rômulo Lima Sousa CP09126-81
// Núbia Cristine Silveira dos Santos CP09142-81.
//Setembro/2010
//Arquivo de especificação para o TAD
#ifndef __COLECAO_H
#define __COLECAO_H
typedef struct _colecao_ Colecao;
typedef struct colaluno Aluno;
Colecao* colCriar(int maxItens);
int colInserir( Colecao *c, void *dado);
int colDestruir(Colecao *c);
void* colBuscar(Colecao* c, void* Key, int comp(void*, void*));
void* colretirar(Colecao* c, void* Key, int comp(void*, void*));
int comp(void* a, void* b);
#endif
Coloque aqui o seu email