// File: Test_Set.cpp // Driver for set ADT #include #include #include "Set_ADT.h" #include "char_ops.h" void Operate(char,SetADT *,int); void main() {SetADT *Set; int NumSets; char Choice; cout << "How many sets to work with? >"; cin >> NumSets; assert(NumSets>0); cout << "Your sets are numbered 0 to " << NumSets-1 << endl; Set=new SetADT [NumSets]; do { cout << "A)dd Item to Set \n"; cout << "R)emove Item From Set \n"; cout << "S)ize (Cardinality) of Set\n"; cout << "U)nion of 2 Sets \n"; cout << "I)ntersection of 2 Sets \n"; cout << "D)ifference of 2 Sets \n"; cout << "M)embership in a Set\n"; cout << "P)rint the Contents of a Set\n"; cout << "Q)uit\n"; Choice=GetChoice("ARSUIDMPQ"); if (Choice!='Q') Operate(Choice,Set,NumSets); } while (Choice!='Q'); } int SelectSet(char *Msg) {int SetNum; cout << Msg << '>'; cin >> SetNum; return(SetNum); } void Operate(char Op,SetADT *Set,int NumSets) {int Set1,Set2,Set3,Element; switch (Op) { case 'A': Set1=SelectSet("Add Element to Which Set?"); assert(Set1>=0 && Set1"; cin >> Element; if (!Set[Set1].addElt(Element)) cout << Element << " already in Set\n"; break; case 'R': Set1=SelectSet("Remove Element From Which Set?"); assert(Set1>=0 && Set1"; cin >> Element; if (!Set[Set1].removeElt(Element)) cout << Element << " wasn't in Set\n"; break; case 'S': Set1=SelectSet("Size of Which Set?"); assert(Set1>=0 && Set1=0 && Set1=0 && Set2=0 && Set3=0 && Set1=0 && Set2=0 && Set3=0 && Set1=0 && Set2=0 && Set3=0 && Set1"; cin >> Element; if (Set[Set1]>Element) cout << Element << " is a member of Set " << Set1 << endl; else cout << Element << " is not a member of Set " << Set1 << endl; break; case 'P': Set1=SelectSet("Print Which Set?"); assert(Set1>=0 && Set1