Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
prog1:tad_conjunto [2024/10/14 17:51] mazieroprog1:tad_conjunto [2024/10/19 13:42] (atual) maziero
Linha 1: Linha 1:
 +====== 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".
 +
 +<note important>
 +Como ainda não aprendemos como manipular bits individuais, neste projeto deve ser usado um vetor de **valores booleanos** para representar os bits.
 +</note>
 +
 +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)