Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 31: maisFreq

Voltar

Defina uma função int maisFreq (int v[], int N) que recebe um vetor v com N elementos ordenado por ordem crescente e retorna o mais 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};
> maisFreq(v, 6)
(int) 2

Resolução

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