Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 29: retiraNeg

Voltar

Defina uma função int retiraNeg (int v [], int N) que retira os números negativos de um vetor com N inteiros. A função deve retornar o número de elementos que não foram retirados.

Exemplo

> int v[5] = {3, -1, 6, 0, -2};
> retiraNeg(v, 5)
(int) 3
> v
(int [5]) {3, 6, 0}

Resolução

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

int retiraNeg (int v[], int N) {
    int i = 0;
    while(i < N) {
        if(v[i] < 0) {
            tail(v+i,N-i);
            N--;
        }
        else i++;
    }
    return N;
}