Escrever a função void repeticao(int m, int n, int A[][MAX] ), que recebe como parâmetro uma matriz A de m linhas e n colunas, e mostra quantas vezes cada um dos elementos aparecem em A. Por exemplo, para a matriz:
2 1 2 3
3 2 1 2
a função repetição deverá mostrar:
O elemento 2 aparece 4 vezes
O elemento 1 aparece 2 vezes
O elemento 3 aparece 2 vezes

Passo 1

Vamos implementar a função repeticao que recebe os parâmetros m, n e a matriz A de dimensão mtimes n e deve mostrar quantas vezes cada valor distinto aparece na matriz. O conteúdo aqui é contagem de frequência de elementos, e vamos usar vetores auxiliares para armazenar valores já vistos e seus contadores.

Passo 2

Inicializamos dois vetores auxiliares: um values para guardar cada valor distinto encontrado e um counts para guardar a quantidade de vezes que esse valor aparece. Também mantemos um inteiro distinct que indica quantos valores distintos já foram registrados.

Passo 3

Percorremos toda a matriz com dois loops aninhados. Para cada elemento x = A[i][j] fazemos uma busca linear em values[0distinct-1]: se x já estiver em values[k], incrementamos counts[k] e paramos a busca; se chegarmos ao fim sem encontrar (ou seja, k == distinct), inserimos x em values[distinct], definimos counts[distinct] = 1 e incrementamos distinct.

Passo 4

Depois de processar toda a matriz, percorremos k de 0 até distinct-1 e usamos printf para exibir “O elemento %d aparece %d vezes\n”, passando values[k] e counts[k].

Resposta

void repeticao(int m, int n, int A[][MAX]) {
int values[MAXMAX];
int counts[MAX
MAX];
int distinct = 0;
for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
        int x = A[i][j];
        int k;
        for (k = 0; k < distinct; k++) {
            if (values[k] == x) {
                counts[k]++;
                break;
            }
        }
        if (k == distinct) {
            values[distinct] = x;
            counts[distinct] = 1;
            distinct++;
        }
    }
}

for (int k = 0; k < distinct; k++) {
    printf("O elemento %d aparece %d vezes\n", values[k], counts[k]);
}
}

Exercícios relacionados