Arrays: elementos repetidos e número de ocorrências
Problema: dado um determinado array, como contar quais os elementos repetidos e o número de ocorrências de cada elemento?
Existem diversas maneiras de se conseguir isso, até porque algumas linguagens possuem uma extensa biblioteca para utilização com arrays. Mas, para treinar um pouco, vou mostrar uma solução em C++. O código já está comentado.
Existem diversas maneiras de se conseguir isso, até porque algumas linguagens possuem uma extensa biblioteca para utilização com arrays. Mas, para treinar um pouco, vou mostrar uma solução em C++. O código já está comentado.
#include <stdio.h> #include <string.h> #include <iostream> using namespace std; // estrutura que contem o valor do número e a quantidade de ocorrências struct number { int value; int count; }; // tamanho definido arbitrariarmente (para facilitar o exemplo) #define MAX 8 // array de entrada int a[MAX] = {5, 3, 5, 1, 1, 1, 2, 1}; // array com estrutura do número number n[MAX]; int used = -1; int found = 0; const int NUL = -1; int main(){ int i, j; // inicializa array for(i=0; i<MAX; i++){ n[i].value = NUL; n[i].count = NUL; } for(i=0; i<MAX; i++){ found = 0; for(j=0; j<used; j++){ // encontrou, incrementa e sair fora if (a[i] == n[j].value){ n[j].count++; found = 1; break; } } // não encontrou o número, armazena if (not found) { used++; n[used].value = a[i]; n[used].count = 1; } } // inicializa array for(i=0; i<used; i++){ cout << i << " "<< n[i].value << " " << n[i].count << "\n\r"; } getchar(); return 0; }
Comentários
Postar um comentário