Questão 33: elimRep
Voltar
Defina uma função int elimRep (int v[], int n)
que recebe um vetor v
com n
inteiros e elimina as repetições. A função deverá retornar o número de elementos do vetor resultante.
Exemplo
> int v[10] = {1, 2, 3, 2, 1, 4, 2, 4, 5, 4};
> elimRep(v, 10)
(int) 5
> v
(int [10]) {3,1,2,5,4} // por exemplo, a ordem dos elementos é irrelevante
Resolução
void tail(int *v, int N) {
int i;
for(i = 1; i < N; i++)
v[i-1] = v[i];
}
int elem(int e, int *v, int N) {
int i, ans = 0;
for(i = 0; i < N && !ans; i++)
if(e == v[i])
ans = 1;
return ans;
}
int elimRep (int v[], int n) {
int i = 0;
while(i < n) {
if(elem(v[i], v+i+1, n-i-1)) { tail(v+i,n-i); n--; }
else i++;
}
return i;
}