Below is an example program I wrote to find mode average. Mode average is the most frequently occuring number in a set.
I haven't handle the case when there are 2 or more values with the same count.
#include <iostream>
#include <set>
int main() {
typedef std::multiset<int> int_multiset; int_multiset mySet;
//populate collection
mySet.insert(10);
mySet.insert(1);
mySet.insert(23);
mySet.insert(23);
mySet.insert(3);
mySet.insert(41);
mySet.insert(2);
mySet.insert(10);
mySet.insert(23);
mySet.insert(54);
mySet.insert(23);
mySet.insert(10);
mySet.insert(12);
mySet.insert(43);
mySet.insert(23);
//find mode average mode average is most frequently appearing number.
int nModeValue 0; int nModeCount 0;
//get beginning iterator
int_multiset::iterator iter mySet.begin();
//NOTE: I DON'T HANDLE CASE WHERE MODE IS NOT UNIQUE
while(iter ! mySet.end()) { //get current value and count
const int nCurrent *iter; const int cCurrent mySet.count(nCurrent);
if(cCurrent > nModeCount) { nModeValue nCurrent;
nModeCount cCurrent;
}
//move iterator by number of count
for(int nMove 0; nMove < cCurrent; ++nMove ++iter); }
std::cout << "Mode Average Is : " << nModeValue << std::endl; return 0;
}