Escrever a função void repeticao(int m, int
, int
), que recebe como parâmetro uma matriz A de
linhas e
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
2 | 1 | 2 | 3 |
3 | 2 | 1 | 2 |
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
,
e a matriz
de dimensão
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
para guardar cada valor distinto encontrado e um
para guardar a quantidade de vezes que esse valor aparece. Também mantemos um inteiro
que indica quantos valores distintos já foram registrados.
Passo 3
Percorremos toda a matriz com dois loops aninhados. Para cada elemento
fazemos uma busca linear em
: se
já estiver em
, incrementamos
e paramos a busca; se chegarmos ao fim sem encontrar (ou seja,
), inserimos
em
, definimos
e incrementamos
.
Passo 4
Depois de processar toda a matriz, percorremos
de 0 até
e usamos
para exibir “O elemento %d aparece %d vezes\n”, passando
e
.
Resposta
void repeticao(int m, int n, int A[][MAX]) {
int values[MAXMAX];
int counts[MAXMAX];
int distinct = 0;
int values[MAXMAX];
int counts[MAXMAX];
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]);
}
}