Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 45: unionMSet

Voltar

Uma forma de representar multi-conjuntos de índices consiste em usar um array de inteiros contendo em cada posição o número de ocorrências desse índice. Assim o multi-conjunto {1, 1, 4, 7, 7, 7} seria representado por um array em que as primeiras 8 posições conteriam {0, 2, 0, 0, 1, 0, 0, 3}.

Apresente uma definição da função int unionMSet (int N, int v1[N], int v2[N], int r[N]) que coloca no array r o resultado da união dos multi-conjuntos v1 e v2.

Exemplo

> int v1[8] = {0, 2, 0, 0, 1, 0, 0, 3};
> int v2[8] = {1, 1, 3, 0, 0, 1, 0, 2};
> int r[8];
> unionMSet(8, v1, v2, r);
> r
(int [8]) {1, 2, 3, 0, 1, 1, 0, 3}

Resolução

#define max(a,b) a > b ? a : b;

int unionMSet (int N, int v1[N], int v2[N], int r[N]) {
    int i, len = 0;
    for(i = 0; i < N; i++) {
        r[i] = max(v1[i], v2[i]);
        len += r[i]; 
    }
    return len;
}