Escrever a função int procura(int
, int
, int
) que retorna 1 se
está presente no vetor
(de
elementos) e retorna 0 , caso contrário. Utilizar a função procura para refazer o exercício
de modo que o vetor
não contenha valores repetidos.
Passo 1
O enunciado pede duas coisas: primeiro escrever uma função procura que recebe um inteiro
, um vetor
de tamanho
e um valor
e retorna 1 se
está em
ou 0 caso contrário; depois usar essa função para refazer o exercício 10 de modo que o vetor C não tenha valores repetidos (vamos assumir que o exercício 10 era simplesmente concatenar dois vetores A (tamanho n) e B (tamanho m) num vetor C).
Passo 2
Para montar a função procura a gente vai percorrer o vetor de 0 até
e comparar cada elemento com (x): se encontrar, retorna 1; caso termine o laço sem encontrar, retorna 0.
Agora, para refazer o exercício 10 sem repetições, a ideia é: primeiro copiar todo o vetor A para C; depois percorrer B e, para cada elemento B[j], só copiar em C se procura(sizeAtual, C, B[j]) retornar 0. Assim garantimos que nenhum valor apareça duas vezes.
Agora, para refazer o exercício 10 sem repetições, a ideia é: primeiro copiar todo o vetor A para C; depois percorrer B e, para cada elemento B[j], só copiar em C se procura(sizeAtual, C, B[j]) retornar 0. Assim garantimos que nenhum valor apareça duas vezes.
Passo 3
O algoritmo completo em C fica assim:
int procura(int n, int v[], int x) {
for (int i = 0; i < n; i++) {
if (v[i] == x) {
return 1;
}
}
return 0;
}
void refaz_ex10(int n, int A[], int m, int B[], int C[], int *pC_size) {
int size = 0;
// Copia A inteiro
for (int i = 0; i < n; i++) {
C[size++] = A[i];
}
// Adiciona B sem repetir
for (int j = 0; j < m; j++) {
if (procura(size, C, B[j]) == 0) {
C[size++] = B[j];
}
}
*pC_size = size;
}
Resposta
A função procura verifica existência linearmente, e a função refaz_ex10 usa procura para inserir em C todos os elementos de A e só os elementos de B que ainda não estiverem em C, garantindo vetores sem repetição.