Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 30: menosFreq

Voltar

Defina uma função int menosFreq (int v[], int N) que recebe um vetor v com N elementos ordenado por ordem crescente e retorna o menos frequente dos elementos do vetor. Se houver mais do que um elemento nessas condições deve retornar o que começa por aparecer no índice mais baixo.

Exemplo

> int v[6] = {1,1,2,2,2,3};
> menosFreq(v, 6)
(int) 3

Resolução

int menosFreq (int v[], int N) {
    int i, freq = 1, minFreq = N, ans = v[0];
    for(i = 1; i < N; i++) {
        if(v[i] == v[i - 1]) freq++;
        else {
            if(freq < minFreq) {
                minFreq = freq;
                ans = v[i - 1];
            }
            freq = 1;
        }
    }
    if(freq < minFreq) {
        minFreq = freq;
        ans = v[i - 1];
    }
    return ans;
}