Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 34: elimRepOrd

Voltar

Defina uma função int elimRepOrd (int v[], int n) que recebe um vetor v com n inteiros ordenado por ordem crescente e elimina as repetições. A função deverá retornar o número de elementos do vetor resultante.

Exemplo

> int v[8] = {1, 2, 2, 3, 4, 4, 4, 5};
> elimRepOrd(v, 8)
(int) 5
> v
(int [8]) {1, 2, 3, 4, 5}

Resolução

void tail(int *v, int N) {
    int i;
    for(i = 1; i < N; i++)
        v[i-1] = v[i];
}

int elimRepOrd (int v[], int n) {
    int i = 1;
    while(i < n) {
        if(v[i] == v[i-1]) { tail(v+i,n-i); n--; }
        else i++;
    }
    return i;
}