#include <stdio.h>
#include <stdlib.h>
#define TAMANHO_DO_VETOR_EX12 50
void enunciadoEx12() {
puts("\n\nEx12: (funcao + ponteiros)\n");
puts("Faca um programa que leia dois vetores (A e B) de 50 posicoes e crie um terceiro (C) com a");
puts("interseccao dos dois primeiros, isto e, coloque em C apenas os elementos que existem em A e");
puts("que tambem existem em B. Mostre C.");
puts("(Dica: Criar funcao que receba como parametro os dois vetores A e B + o terceiro vetor, e que");
puts("abasteca o terceiro vetor conforme a regra acima).");
}
void atribuirInterseccaoEx12(int *vetorC, int interseccao, int indexC) {
*(vetorC + indexC) = interseccao;
}
void resolucaoEX12() {
int vetorA[TAMANHO_DO_VETOR_EX12] = {
-1, 1, -2, 2, -3, 3, -5, 5, -8, 8,
-6, 6, -4, 4, -9, 9, -7, -7, -3, -3,
-1, 1, -5, 5, -8, 8, -4, -4, -3, -3,
-7, 7, -9, 9, -4, 4, -8, 8, -2, -2,
-1, -5, -8, 0, 2, 5, -6, 1, -5, -9
};
int vetorB[TAMANHO_DO_VETOR_EX12] = {
1, 1, -2, 2, -3, 3, -5, 5, -8, 8,
6, 6, -4, 4, 9, 9, -7, -7, -3, -3,
1, 1, -5, 5, -8, 8, -4, -4, -3, -3,
7, 7, -9, 9, -4, 4, -8, 8, -2, -2,
1, -5, -8, 0, 2, 5, -6, 1, 5, -9
};
int vetorC[TAMANHO_DO_VETOR_EX12] = {0};
int indexC = 0;
int interseccao = 0;
for (int index = 0; index <= TAMANHO_DO_VETOR_EX12; index++) {
interseccao = vetorA[index];
if(interseccao == vetorB[index]) {
if(indexC == 0) {
atribuirInterseccaoEx12(&vetorC, interseccao, indexC);
indexC++;
}
else {
int atribuirInterseccao = 1;
for (int countC = 0; countC < indexC; countC++) {
if(interseccao == vetorC[countC]) atribuirInterseccao = 0;
}
if (atribuirInterseccao == 1) {
atribuirInterseccaoEx12(&vetorC, interseccao, indexC);
indexC++;
}
}
}
}
puts("");
if(indexC > 0) {
printf("IndexC count = %d\n", indexC);
for (int index = 0; index < indexC; index++) {
printf("VetorC[%d] = %d\n", index, vetorC[index]);
}
}
else printf("\nNao existe interseccao entre os vetores\n");
}
void executeEx12() {
enunciadoEx12();
resolucaoEX12();
}
int main(void) {
executeEx12();
return EXIT_SUCCESS;
}