Ler dois vetores A e B com Ne M elementos respectivamente. Gerar um novo vetor
que corresponde à intersecção dos vetores A e B. Gerar um novo vetor
que corresponde à união dos vetores A e B. Imprimir os vetores A, B, C e D. Considerar que não existem elementos repetidos em cada um dos vetores A e B.
Passo 1
O enunciado pede para ler dois vetores A e B com N e M elementos, gerar o vetor C que é a interseção de A e B e o vetor D que é a união de A e B, e ao final imprimir A, B, C e D. O conteúdo aqui é teoria de conjuntos aplicada a vetores e vamos precisar usar operações de interseção e união, além de laços de repetição e teste de igualdade entre elementos.
Passo 2
Para gerar o vetor C (interseção), vamos percorrer cada elemento de A e verificar se ele também aparece em B. Se aparecer, adicionamos em C. Na teoria de conjuntos, isso corresponde a definir
$$
C = { x \in A \mid x \in B }\n$$
implementando via dois loops aninhados.
implementando via dois loops aninhados.
Passo 3
Para gerar o vetor D (união), vamos começar copiando todos os elementos de A para D e, em seguida, percorrer cada elemento de B. Para cada elemento de B, fazemos um teste de presença em A; se não estiver, adicionamos em D. Na teoria de conjuntos,
que aqui traduzimos para “todos os de A mais os de B que ainda não estão em A”.
Passo 4
Por fim, basta imprimir os quatro vetores A, B, C e D na ordem pedida.
Resposta
// Pseudo-código para resolver o problema
leia N // tamanho de A
leia M // tamanho de B
para i de 1 até N faça
leia A[i]
para j de 1 até M faça
leia B[j]
leia N // tamanho de A
leia M // tamanho de B
para i de 1 até N faça
leia A[i]
para j de 1 até M faça
leia B[j]
// Construir C = interseção de A e B
tamC ← 0
para i de 1 até N faça
para j de 1 até M faça
se A[i] = B[j] então
C[tamC] ← A[i]
tamC ← tamC + 1
tamC ← 0
para i de 1 até N faça
para j de 1 até M faça
se A[i] = B[j] então
C[tamC] ← A[i]
tamC ← tamC + 1
// Construir D = união de A e B
tamD ← N
para i de 1 até N faça
D[i-1] ← A[i] // copiar A para D
tamD ← N
para i de 1 até N faça
D[i-1] ← A[i] // copiar A para D
para j de 1 até M faça
existe ← falso
para i de 1 até N faça
se B[j] = A[i] então
existe ← verdadeiro
saia do laço interno
se não existe então
D[tamD] ← B[j]
tamD ← tamD + 1
existe ← falso
para i de 1 até N faça
se B[j] = A[i] então
existe ← verdadeiro
saia do laço interno
se não existe então
D[tamD] ← B[j]
tamD ← tamD + 1
// Impressão dos vetores
imprima "Vetor A: ", A[0…N-1]
imprima "Vetor B: ", B[0…M-1]
imprima "Interseção C: ", C[0…tamC-1]
imprima "União D: ", D[0…tamD-1]
imprima "Vetor A: ", A[0…N-1]
imprima "Vetor B: ", B[0…M-1]
imprima "Interseção C: ", C[0…tamC-1]
imprima "União D: ", D[0…tamD-1]