henrique - o resto

Laboratório 12 - Conjuntos

voltar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
    pertence{
      loop (percorrendo o vetor até o fim){
        se (o numero estiver dentro do vetor){
          retorna 1
        }
      }
      retorna 0
    }

    contido{
      loop (percorre todos os valores do conjunto1){
        loop (enquanto não achar o valor atual do conjunto1 em conjunto2){
            ## Esse loop só percorre o vetor inteiro, procurando elemento igual.
            ## Se achar, ele sai do loop
        }
        ## Se voce saiu do loop antes de terminar, significa que o elemento está
        ## dentro do conjunto. Se voce foi até o fim, significa que o elemento
        ## não está dentro, e então, conjunto 2 não está contido no conjunto 1
        se (não percorreu todo o conjunto2){
            retorna 0
        }
      }
      ## Se chegou até aqui, significa que nenhuma vez ele percorreu todo o con-
      ## junto 2 inteiro, ou seja, ele encontrou todo elemento do conj1 no conj2
      retorna 1
    }

    adicao{
      ## Você pode , ao invez de faze o loop abaixo, utilizar sua função pertce
      ## para ver se o número pertence ao conjunto, se sim, retorna tamanho, se
      ## não adiciona o valor no vetor. :)
      loop (percorre todo o conjunto){
          se encontrou o valor no conjunto{
            retorna tamanho;
          }
      }
      ## Se chegou até aqui, significa que não encontrou o valor no vetor ##
      adiciona o valor no vetor
      retorna tamanho+1;
    }

    subtracao{
      ## assim como na adição, aqui voce pode usar a função pertence novamente.
      loop (percorre todo o conjunto){
          se encontrou o valor no conjunto{
            remove ele do vetor;
            retorna tamanho-1;
          }
      }
      retorna tamanho;
    }

    uniao{
      loop (percorre o primeiro conjunto até tam1){
          loop (percorre o segundo conjunto até tam2){
            se o elemento dos dois forem iguais{
              adiciona o elemento no conjunto conjRes;
              # Utilize a função adicao() implementada por voce(tamanho = adicao())
              # lembre-se que ela retorna o numero de elementos no conjunto após
              # a adição
            }
          }
      }

      retorna tamanho
    }

    intersecao{
      loop (percorre o primeiro conjunto até tam1){
        adiciona os elentos do primeiro conjunto no conjRes
      }
      loop (percorre o segundo conjunto até tam2){
          adiciona os elemento do conjunto2 em conjRes;
          # Utilize a função adicao() implementada por voce
          #já que ela garante que não serão adicionados dois elementos iguais
      }

      retorna tamanho;
    }

    diferenca{
        # estou sem tempo para fazer essa como pseudocógido, sorry <3
    }

Dicas

        A = {2, 5, 7}
        B = {2, 5}
    

Como rodar com dois arquivos?

Compilando:

  1. Crie um diretório (pasta) para o laboratorio 12. Por exemplo, criarei uma pasta em Documentos com o nome lab12
  2. Faça o download dos dois arquivos lab12.c e lab12_main.c deixando os dois dentro do diretório que voce criou para o laboratório 12
  3. Nesse laboratório, o unico arquivo que você deverá editar é o lab12.c
  4. Para compilar esse laboratório, abra o terminal e navegue até o diretório (utilizando o comando ‘cd’ Ex. cd Documents/lab12). Quando estiver dentro do diretório, rode o seguinte código: gcc lab12.c lab12_main.c -o lab12
  5. Para rodar o executável, rode ./lab12

Usando o testador

Usando o testador, você só precisa colocar os dois arquivos (lab12.c e lab12_main.c) na mesma pasta, e usar o testador normalmente. :D