home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sets115.zip / Sets.hpp < prev    next >
C/C++ Source or Header  |  1997-05-24  |  2KB  |  80 lines

  1. // Sets v 1.15
  2. // Hubert Chan, May 24, 1997
  3.  
  4. //#include <stream.h>
  5.  
  6. #ifndef __SETS_
  7. #define __SETS_
  8.  
  9. #define MAXELEMENT  6   // The largest possible element
  10. #define MINELEMENT -3   // The smallest possible element
  11.  
  12.  
  13. class Set {
  14. public:
  15.   typedef int SetElement;
  16. private:
  17.     #define NUMELEMENTS MAXELEMENT - MINELEMENT + 1
  18.     #define SETELEMENTSIZE ((NUMELEMENTS + 7) / 8)
  19.     char SetElements[SETELEMENTSIZE];
  20.     void AddElem(SetElement);    // add an element to the set
  21.     void RemoveElem(SetElement); // removes an element from the set
  22.     void ClearSet();             // creates the empty set
  23. public:
  24.     Set() {
  25.         ClearSet();
  26.     }
  27.  
  28.     Set(int size, SetElement *Elements) {
  29.         int counter;
  30.         ClearSet();
  31.         for(counter = 0; counter < size; counter++) {
  32.             AddElem(Elements[counter]);
  33.         }
  34.     }
  35.  
  36.     Set(SetElement Element) {
  37.         ClearSet();
  38.         AddElem(Element);
  39.     }
  40.  
  41.     Set(Set& Set2);
  42.  
  43.     int Card(); // cardinality
  44.  
  45.     Set operator=(Set);  // assignment
  46.     Set operator+(Set);  // union
  47.     Set operator|(Set);  // union
  48.     Set operator+(SetElement); // add an element
  49.     Set operator|(SetElement); // add an element
  50.     Set operator+=(Set);
  51.     Set operator|=(Set);
  52.     Set operator+=(SetElement);
  53.     Set operator|=(SetElement);
  54.     Set operator-();     // complement
  55.     Set operator~();     // complement
  56.     Set operator*(Set);  // intersection
  57.     Set operator^(Set);  // intersection
  58.     Set operator&(Set);  // intersection
  59.     Set operator*=(Set);
  60.     Set operator^=(Set);
  61.     Set operator&=(Set);
  62.     Set operator-(Set);  // intersection of complement (difference)
  63.     Set operator-(SetElement); // remove an element
  64.     Set operator-=(Set);
  65.     Set operator-=(SetElement);
  66.     int operator==(Set); // equivalence
  67.     int operator!=(Set); // inequivalence
  68.     int operator<=(Set); // subset
  69.     int operator<(Set);  // proper subset
  70.     int operator>=(Set); // superset
  71.     int operator>(Set);  // proper superset
  72.     friend int operator<=(SetElement, Set); // element
  73.  
  74.     friend void PrintSet(Set &);
  75. //    friend ostream& operator<<(ostream &, Set &);
  76.  
  77. };
  78.  
  79. #endif
  80.