Starting from:
$35

$29

Homework 4: UintSet Solution

Educational Objectives. After successfully completing this = assignment,=20 the student should be able to accomplish the following:
    • Design a class based on non-language-specific specifications=20
    • Implement a class of your own design=20
    • Implement constructors, copy constructor, destructor, and = assignment=20 operator for a class that has resource allocation requirements=20
    • Global operators for a class=20
    • Correctly separate class definition and implementation using files =
    • Create executables of class client programs using makefiles and = the Make=20 utility=20
    • Test a class using specs and an existing test platform=20
    • Use fsu::BitVector in designing set classes
Operational Objectives: Define and implement the = class=20 UIntSet and deliver the code in two files uintset.h = and=20 uintset.cpp along with a makefile for the supplied test = harness.
Deliverables: uintset.h, = uintset.cpp,=20 makefile
Background
See lecture notes    
Procedural Requirements:
    1. Design the class UIntSet
    2. Implement the class UIntSet with the class definition in file=20 uintset.h and the class implementation in file=20 uintset.cpp
    3. Thoroughly test class UIntSet, starting out with the supplied test = harness=20 in file hw4/test.cpp using command line compile
    4. Write a makefile that builds test.x with the "in lieu of = makefile"=20 include statement commented out or removed
    5. Test the executable again, and refine your work to withstand = testing.
    6. Turn in uintset.h, uintset.cpp, and = makefile=20 using the hw4submit.sh submit script.
Warning: Submit scripts do not work on the = program and=20 linprog servers. Use shell.cs.fsu.edu to submit = projects. If=20 you do not receive the second confirmation with the contents of your = project,=20 there has been a malfunction.
Technical Requirements and Specifications
    1. The class should implement the following diagram:=20
Class Name:
  UIntSet
Services : 
  void        Insert   ( unsigned long n )        // =
inserts n into set
  void        Remove   ( unsigned long n )        // removes n from set
  void        Clear    ()                         // makes set empty
  bool        Member   ( unsigned long n ) const  // returns true iff n =
is in set

  bool        Empty    () const;   // true iff set is empty
  size_t      Size     () const;   // returns number of elements in set
  size_t      Range    () const;   // returns upper bound of =
range/universe [0,ub)

  UIntSet& operator =3D  (const UIntSet& s);  // set =3D s =
(assignment operator)
  UIntSet& operator +=3D (const UIntSet& s);  // set =3D set =
union s
  UIntSet& operator *=3D (const UIntSet& s);  // set =3D set =
intersection s
  UIntSet& operator -=3D (const UIntSet& s);  // set =3D set =
difference s
Properties : 
  Constructable: objects can be declared as ordinary =
variables, max size may be specified
  Assignable:    objects can be assigned one to another
  Passable:      objects can be passed by value to and returned as =
values from functions  
Private variables:
  size_t         size_;  // the size of the current set
  fsu::BitVector bv_;    // bit vector representing set
Global operators: 
  UIntSet operator + (const UIntSet& s1, const =
UIntSet& s2);  // returns s1 union s2
  UIntSet operator * (const UIntSet& s1, const UIntSet& s2);  // =
returns s1 intersection s2=20
  UIntSet operator - (const UIntSet& s1, const UIntSet& s2);  // =
returns s1 difference s2
  std::ostream& operator << (std::ostream& os, const =
UIntSet& s); // output operator
    2. The class should be a proper type, to include default and = 1-argument=20 constructor, copy constructor, assignment operator, and destructor. = The=20 constructor argument sets the maximum size of unsigned integers that = can=20 belong to the set. Default maximum element size is 64.
    3. The output operator operator<< should be overloaded = for the=20 type UIntSet. Output should be "{ 0 6 12 18 }" for = the set=20 containing elements 0, 6, 12, 18.
    4. Global binary operators operator+, operator*,=20 operator- should be overloaded for the type UIntSet. = The=20 syntax and semantics of these operators are as follows:
UIntSet(200) s1, s2, s3; // three empty sets with =
range [0,1,2,...,200)
s2.Insert(2); s2.Insert(3); s2.Insert(4);
s3.Insert(2); s3.Insert(4); s3.Insert(6);
std::cout << s2;  // prints { 2 3 4 }
s1 =3D s2 + s3; // s1 is the set union of s2 and s3
std::cout << s1;  // prints { 2 3 4 6 }
s1 =3D s2 * s3; // s1 is the set intersection of s2 and s3
std::cout << s1;  // prints { 2 4 }
s1 =3D s2 - s3; // s1 is the set difference of s2 and s3
std::cout << s1;  // prints { 3 }
    5. UIntSet should pass testing with the supplied hw4/test.cpp = with no=20 compile or runtime errors and no compiler warnings when the warning = flags=20 -W, -Wall, -Wextra are set.
    6. Building and running the supplied hw4/test.cpp should = result in=20 output identical to the supplied executable = area51/settest_?.x [? =3D=20 i or s] .

More products