// file name: integerset.h
// assignment: integerset
// description: head of integerset class
#ifndef integerset_h
#define integerset_h
class integerset{
public:
integerset();
//default constructor;
integerset(int* set,int size);
//constructor from an int array;
integerset(const integerset& ia);
//copy constructor;
//three ways to initialize the instance;
friend std::istream& operator>>(std::istream & cin,integerset& ia);
//input overload
friend std::ostream& operator<<(std::ostream & cout,integerset& ia);
//output overload
void printset(std::ostream &ostr=std::cout );
//output the instance;
integerset operator+(integerset &addedset);
//overload union
integerset operator-(integerset &subbedset);
//overload intersection
void unionof(const integerset &set1, const integerset &set2 );
void intersectionof( const integerset &set1, const integerset &set2 );
bool isequalto( const integerset &set );
void insertelement( int num );
void deleteelement( int num );
bool isinset( int num );
private:
bool integer[101];
};
/*std::ostream& operator<<(std::ostream& cout,integerset& ia){
cout<<"{";
for(int index=0;index<=100;index++){
if(ia.integer[index]==true)
cout<<ia.integer[index]<<",";
}
cout<<"}";
return cout;
}*/
#endif
//integerset.cpp
// assignment: integerset
// description: detail of integerset class
#include<iostream>
#include "integerset.h"
integerset::integerset(){
//initialize the set having no integer
for(int index=0;index<=100;index++)
integer[index]=false;
}
integerset::integerset(const integerset & ia){
//initialize the set using copy constructor
for(int index=0;index<=100;index++)
integer[index]=false;
for(index=0;index<=100;index++)
if(ia.integer[index]) this->integer[index]=true;
}
integerset::integerset(int* set,int size){
//initialize the set from a integer array
for(int index=0;index<=100;index++)
integer[index]=false;
for( index=0;index<size;index++)
integer[set[index]]=true;
}
void integerset::unionof(const integerset &set1, const integerset &set2 ){
for(int index=0;index<=100;index++){
if(set1.integer[index]==true||set2.integer[index]==true)
this->integer[index]=true;
else
this->integer[index]=false;
}
}
void integerset::intersectionof( const integerset &set1, const integerset &set2 ){
for(int index=0;index<=100;index++){
if(set1.integer[index]==true&&set2.integer[index]==true)
this->integer[index]=true;
else
this->integer[index]=false;
}
}
bool integerset::isequalto( const integerset &set ){
int index;
for(index=0;index<=100;index++)
{
if(integer[index]!=set.integer[index])
return false;
}
return true;
}
void integerset::printset( std::ostream &ostr ) {
ostr<<"{";
for(int index=0;index<=100;index++){
if(this->isinset(index)) ostr<<index<<",";
}
ostr<<'\b';
ostr<<"}"<<std::endl;
}
void integerset::insertelement( int num ){
if(num<=100&&num>=0)
this->integer[num]=true;
}
void integerset::deleteelement( int num ){
if(num<=100&&num>=0)
this->integer[num]=false;
}
bool integerset::isinset( int num ){
return this->integer[num];
}