====== O TAD Conjunto ====== Este trabalho visa implementar um Tipo Abstrato de dado (TAD) "conjunto de inteiros" usando um //bitmap//. ===== Atividade ===== Você deve implementar um TAD "conjunto de números inteiros" usando um vetor de flags, de forma similar aos [[https://en.wikipedia.org/wiki/Bit_array|bitmaps]]. Um //bitmap//, ou //bit array//, é um vetor de bits nos quais os índices representam números inteiros e os bits representam valores booleanos (verdadeiro/falso). Dado um conjunto C representado por um bitmap B, se B[i] == true então "i" pertence a C. Como ainda não aprendemos como manipular bits individuais, neste projeto deve ser usado um vetor de **valores booleanos** para representar os bits. As seguintes operações devem ser suportadas: * ''cria (conjunto)'': cria um novo conjunto * ''destrói (conjunto)'': destrói o conjunto * ''insere (conjunto, item)'': insere um novo item no conjunto * ''retira (conjunto, item)'': retira o item do conjunto * ''pertence (conjunto, item)'': informa se o item está no conjunto * ''vazio (conjunto)'': informa se o conjunto está vazio * ''card (conjunto)'': informa a cardinalidade (número de elementos) do conjunto * ''contem (c1, c2)'': informa se o conjunto c1 contém o conjunto c2 * ''igual (c1, c2)'': informa se o conjunto c1 é igual ao conjunto c2 * ''união (c1, c2)'': calcula a união dos conjuntos c1 e c2 * ''interseção (c1, c2)'': calcula a interseção dos conjuntos c1 e c2 Os arquivos necessários para desenvolver este trabalho estão {{ :prog1:tp5.tgz |neste arquivo}}. Eles são: * ''set.h'': arquivo de cabeçalho com os protótipos das funções (**não deve ser alterado**). * ''set.c'': arquivo que implementa as operações sobre os conjuntos ("esqueleto" a completar). * ''tp5.c'': código que testa a biblioteca (**não deve ser alterado**). * ''tp5.txt'': saída do código que testa a biblioteca. * ''makefile'': arquivo do utilitário "make" para compilar seu código. ===== Entregáveis ===== Entregue um único arquivo ''tp5.tgz'' que contenha todos os arquivos do projeto. Critérios de avaliação: * Funcionar corretamente m( * Não ter problemas de memória (testar com Valgrind) * Respeitar o conceito de TAD * Usar funções para evitar repetição de blocos de código * Respeitar estilo (endentação, espaçamento, nomes de variáveis) * Usar comentários (nem demais, nem de menos) * ... (outros que se fizerem necessários)