How do I count the number of occurrences in an array?
Use a std::map
to map integers to their counts.
std::map<int, int> counts;
for (int i = 0; i < 5; i++) {
counts[myArray[i]]++; // increment the counter for the current value
}
Now you can print the keys and values in counts
. See How to loop through a C++ map of maps? for how to do this.
You can do it with an array instead of a map. The only difference is that it won't automatically expand to handle larger values (unless you use malloc
and realloc
to make it dynamically sized).
#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;
}
zachbugay
Updated on July 09, 2022Comments
-
zachbugay almost 2 years
I have generated an array of 5 random integers from 1-5. Here is what the array looks like now:
myArray[5] = {3, 3, 1, 4, 5}
I have now sorted the array of 5 integers in ascending order, from least to greatest.
myArray[5] = {1, 3, 3, 4, 5}
I now need to count the number of occurrences a specific integer has and make a table of it.
Such as:
Number: Count: 1:1 2:0 3:3 4:0 5:1
The farthest I've gotten has been looping through the array. I am having a hard time talling the numbers and creating a count of how many occurances there are.
Not using any maps, or iterations, etc. I am trying to get this count. Here is what I have tried already:
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"; }
However, my output is incredibly wrong.