Escreva uma função que aceita como parâmetro um array de inteiros com N valores, e determina o maior elemento do array e o número de vezes que este elemento ocorreu no array. Por exemplo, para um array com os seguintes elementos: 5,2,15,3,7,15, 8,6,15, a função deve retorna para o programa que a chamou o valor 15 e o número 3 (indicando que o número 15 ocorreu 3 vezes). A função deve ser do tipo void.

Passo 1

Estamos com um array de inteiros de tamanho N e precisamos criar uma função void que determine o maior elemento do array e quantas vezes ele ocorre.

Passo 2

Para não precisar de duas passagens pelo array, vamos fazer em uma única varredura: inicializamos duas variáveis locais, uma para armazenar o maior valor encontrado (max) e outra para contar suas ocorrências (cnt). Atribuímos ao início max = arr[0] e cnt = 1. Percorremos o array de i = 1 até i = N−1. A cada elemento arr[i] fazemos: se arr[i] > max, então atualizamos max = arr[i] e resetamos cnt = 1. Se arr[i] == max, incrementamos cnt em 1.

Passo 3

Depois de terminar o loop, atribuiremos os valores de max e cnt aos parâmetros de saída (ponteiros) e retornamos, encerrando a função void.

Resposta

void find_max_and_count(int arr[], int N, int *max_val, int *count) {
if (N <= 0) {
*count = 0; // Se o array estiver vazio, não há ocorrências
return;
}
int max = arr[0];
int cnt = 1;

for (int i = 1; i < N; i++) {
    if (arr[i] > max) {
        max = arr[i];
        cnt = 1;
    } else if (arr[i] == max) {
        cnt++;
    }
}

*max_val = max;
*count   = cnt;
}

Exercícios relacionados