How to make a CMinMaxAvg class
I got asked how to create a simple averaging class. If you where feeling smart you could enhance this class in to a template class for a object that has the =,+,>,< operator. But I’m feeling lazy today.
class CMinMaxAvg { private : int m_count; int m_total; int m_min; int m_max; public: CMinMaxAvg() { m_count = 0 ; m_total = 0 ; m_min = 0 ; m_max = 0 ; } void add( int iNum ) { if( m_count == 0 ) { SetMax( iNum, true ) ; SetMin( iNum, true ); } SetMax( iNum, false ); SetMin( iNum, false ); m_count ++; m_total += iNum ; } void SetMax( int iNum, bool force=true ) { if( m_max < iNum || force ) { m_max = iNum ; } } void SetMin( int iNum, bool force=true ) { if( m_min > iNum || force) { m_min = iNum ; } } float GetAvg( ) { return (float)m_total/(float)m_count ; } int GetMax() { return m_max ; } int GetMin() { return m_min ; } };
Leave a comment