J’ai généré un tableau de 5 nombres entiers aléatoires de 1-5. Voici à quoi ressemble le tableau: myArray[5] = {3, 3, 1, 4, 5}
J’ai maintenant sortingé le tableau de 5 entiers par ordre croissant, du plus petit au plus grand.
myArray[5] = {1, 3, 3, 4, 5}
Je dois maintenant compter le nombre d’occurrences d’un entier spécifique et en faire un tableau.
Tel que:
Number: Count: 1:1 2:0 3:3 4:0 5:1
Le plus éloigné que j’ai eu a parcouru le tableau en boucle. J’ai du mal à rassembler les chiffres et à compter le nombre d’occurrences.
Ne pas utiliser de cartes, ou itérations, etc. J’essaie d’obtenir ce compte. Voici ce que j’ai déjà essayé:
int counts[10]; for (int x = 0; x <= 10; x++){ int counter = 0; for (int j = 0; j < ARRAY_SIZE; j++){ if (x == myArray[j]){ counts[x] == counter++; } } cout << "Number: " << x << "Number of Occurances: " << counts[counter]<< "\n"; }
Cependant, ma sortie est incroyablement fausse.
Utilisez std::map
pour mapper les entiers avec leurs nombres.
std::map counts; for (int i = 0; i < 5; i++) { counts[myArray[i]]++; // increment the counter for the current value }
Vous pouvez maintenant imprimer les clés et les valeurs en counts
. Voir Comment parcourir en boucle une carte C ++? pour comment faire cela.
Vous pouvez le faire avec un tableau au lieu d'une carte. La seule différence est qu'il ne se développera pas automatiquement pour gérer des valeurs plus grandes (sauf si vous utilisez malloc
et realloc
pour le realloc
de manière dynamic).
#define MAX_VALUE 9 int counts[MAX_VALUE+1] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; for (int i = 0; i < ARRAY_SIZE; i++) { if (myArray[i] <= MAX_VALUE) { counts[myArray[i]]++; // increment the counter for the current value } } for (int j = 0; j <= MAX_VALUE; j++) { cout << "Number: " << j << "Number of Occurances: " << counts[j] << endl; }