====== O TAD Conjunto ====== Este trabalho visa implementar um Tipo Abstrato de dado (TAD) "conjunto de inteiros" usando um vetor de booleanos. ===== 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 ∈ 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: * ''c = cria (conjunto)'': cria um novo conjunto * ''destrói (conjunto)'': destrói o conjunto * ''d = copia (conjunto)'': cria uma cópia do conjunto * ''c = aleat (...)'': cria um conjunto aleatório * ''insere (conjunto, item)'': insere um novo item no conjunto * ''retira (conjunto, item)'': retira o item do conjunto * ''card (conjunto)'': informa a cardinalidade (número de itens) do conjunto * ''pertence (conjunto, item)'': informa se o item pertence ao conjunto * ''igual (c1, c2)'': informa se o conjunto c1 é igual ao conjunto c2 * ''contem (c1, c2)'': informa se o conjunto c1 contém o conjunto c2 * ''união (c1, c2)'': calcula a união dos conjuntos c1 e c2 (c1 ∪ c2) * ''interseção (c1, c2)'': calcula a interseção dos conjuntos c1 e c2 (c1 ∩ c2) * ''diferença (c1, c2)'': calcula a diferença dos conjuntos c1 e c2 (c1 - c2) * ''imprime (conjunto)'': imprime o conteúdo do conjunto Os arquivos necessários para desenvolver este trabalho estão {{ :prog1:tp5.tgz |neste arquivo}}. Eles são: * ''conjunto.h'': arquivo de cabeçalho com os protótipos das funções (**não deve ser alterado**). * ''conjunto.c'': arquivo que implementa as operações sobre os conjuntos ("esqueleto" a completar). * ''teste.c'': código que testa a biblioteca (**não deve ser alterado**). * ''teste.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'' contendo 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)