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.
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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With