Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior |
prog1:tad_conjunto [2023/10/09 23:50] – [Atividade] maziero | prog1:tad_conjunto [2024/10/19 13:42] (atual) – maziero |
---|
| ====== 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) |