home *** CD-ROM | disk | FTP | other *** search
/ Microsoftware Monthly 19…2 Programming Power Tools / MASO9512.ISO / cpptutor / cpptutor.arj / EXAMPLES / EX09081.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-10-14  |  2.5 KB  |  79 lines

  1. // \EXAMPLES\EX09081.H
  2. // definition of class Grade
  3.  
  4. // Files used in this example:
  5. //--------------------------------------------------------
  6. // EX09081.H      this file
  7. // %F,15,EX09081.CPP%EX09081.CPP    members of class Grade
  8. // %F,15,EX0908.CPP%EX0908.CPP     main() function
  9. //--------------------------------------------------------
  10.  
  11. // Used to store a pair of integers
  12. typedef struct { long first, second;} LongPair;
  13.  
  14.  
  15. //---------------------------------------------------------
  16. // The Grades Class manages an associative array of grades
  17. //---------------------------------------------------------
  18. class Grade
  19. {
  20. public:
  21.    // Used to associate a letter grade to a numeric grade
  22.    // range
  23.    typedef struct
  24.    {
  25.       char letter[4];  // Used to store a letter grade
  26.       LongPair range;  // Used to store a numeric grade range
  27.    } GradeAssoc;
  28.  
  29.    static const LongPair null;
  30.  
  31.    //------------------------------------------------------
  32.    // FUNCTION:     operator[]
  33.    // PARAMETERS:   char * p A letter grade
  34.    // Return Value: LongPair A numeric range
  35.    //------------------------------------------------------
  36.    LongPair
  37.    operator[]( char* p);
  38.  
  39.    //------------------------------------------------------
  40.    // FUNCTION:      operator[]
  41.    // PARAMETERS:   LongPair A numeric range
  42.    // RETURN VALUE: char * p A letter grade
  43.    //------------------------------------------------------
  44.    char*
  45.    Grade::operator[]( int x);
  46.  
  47.    //------------------------------------------------------
  48.    // FUNCTION:      NumElem
  49.    // RETURN VALUE: The number of grades in the associative
  50.    // array
  51.    //------------------------------------------------------
  52.    const int
  53.    NumElem() const { return 5;}
  54.  
  55. private:
  56.    //------------------------------------------------------
  57.    // The associative array of Numeric grade ranges and Letter
  58.    // grades
  59.    //------------------------------------------------------
  60.    static GradeAssoc GradeList[];
  61.  
  62.    //------------------------------------------------------
  63.    // Used to compare two Letter grades
  64.    //------------------------------------------------------
  65. //   friend int _Optlink     // IBM CSet II version
  66. //   CompareLetter( const void* keyval, const void* datum);
  67.    friend int            // Borland and Microsoft version
  68.    CompareLetter( const void* keyval, const void* datum);
  69.  
  70. };
  71.  
  72.  
  73. ostream&
  74. operator<<( ostream& os, LongPair range);
  75.  
  76.  
  77. ostream&
  78. operator<<( ostream& os, Grade::GradeAssoc assoc);
  79.