The number of your particular task is the value of the
expression faculty_number%21.
0. Define a class Deque
that represents a deque of strings by keeping its elements in a
dynamically allocated array (with maximum capacity) and make the
deque as a "circular array" (the first element follows the last
one).
Supply the "big three" memory management functions. Use this
class to demonstrate
(a) the difference between initialization
Deque s;
Deque t = s;
and assignment operation
Deque s;
Deque t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply member functions size,
push_front and push_back. Overload the
-- unary prefix
operator (--s) for
pop_front operation and --
postfix operator (s--)
for pop_back operation. Overload the stream operators << and >> for output and
input deque elements. Demonstrate all these functions and
operators.
1. Define a class Queue that
represents
a
queue
of strings by keeping its elements in a dynamically allocated
array (with maximum capacity) and make the queue as a "circular
array" (the first element follows the last one).
Supply the "big three" memory management functions. Use this
class to demonstrate
(a) the difference between initialization
Queue s;
Queue t = s;
and assignment operation
Queue s;
Queue t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply a member function size().
Overload the +=
binary operator for push an element to a queue and the -- unary operator for
pop an element from the queue. For example
Queue q;
q += "abc";
q--;
produces an empty queue. Overload the stream operators << and >> for output and
input queue elements. Demonstrate all these functions and
operators.
2. Define a class Stack
that represents a stack of strings by keeping its elements in a
dynamically allocated array (with maximum capacity). Supply the
"big three" memory management functions. Use this class to
demonstrate
(a) the difference between initialization
Stack s;
Stack t = s;
and assignment
Stack s;
Stack t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply member functions push
and pop that add
and remove an element to and from a stack. Overload the + operator for joint
two stacks with return value a new stack, produced by repeatedly
removing an element from the second stack and add it to the
first stack. Overload the stream operators << and >>. Demonstrate
all these functions and operators.
3. Define a class Rectangle
with sides, parallel to the coordinate axes. A rectangle is
defined by two points in the plane - upper-left and lower-right
corners. Store the data members in a dynamically allocated array
of integers.
Supply the "big three" memory management functions. Use
this class to demonstrate
(a) the difference between initialization
Rectangle s;
Rectangle t = s;
and assignment operation
Rectangle s;
Rectangle t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply member functions that calculate the perimeter and the
area of the rectangle. Overload the && operator that return the
intersection of two rectangles and the > and < operators (with
boolean return values) to compare two rectangles with respect to
their areas. Overload the stream operators << and >>. Demonstrate
all these functions and operators.
4. Define a class Triangle
that stores the side lengths of a triangle, by keeping the
numbers in a dynamically allocated array of doubles.
Supply the "big three" memory management functions. Use this
class to demonstrate
(a) the difference between initialization
Triangle s;
Triangle t = s;
and assignment operation
Triangle s;
Triangle t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply a member functions that calculate the perimeter and the
area of the triangle. Overload the ++ operator (prefix and postfix forms) that
add 1 to the length of the each triangle side and the > operator (with
boolean return value) to compare two triangles with respect to
their areas. Overload the stream operators << and >>. Demonstrate
all these functions and operators.
5. Define a class Cubic
that stores the coefficients of a polynomial of degree 3 in a
dynamically allocated array of doubles. Supply the "big three"
memory management functions. Use this class to demonstrate
(a) the difference between initialization
Cubic s;
Cubic t = s;
and assignment operation
Cubic s;
Cubic t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply a member function which calculates the value of the
polynomial for a given argument value. Overload + and - operators for
addition and subtraction of two polynomials and the unary
operator * which
return true or false when the
corresponding cubic function has or has not critical points. (We
say that a function f(x) has a critical point z when its derivative has
value null at this point, i.e. f '(z)
= 0.) Overload the stream operators << and >>. Demonstrate all these functions
and operators.
6. Define a class Quadratic
that stores the coefficients of a quadratic polynomial in a
dynamically allocated array of doubles. Supply the "big three"
memory management functions. Use this class to demonstrate
(a) the difference between initialization
Quadratic s;
Quadratic t = s;
and assignment operation
Quadratic s;
Quadratic t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply a member function which calculates the value of a
quadratic function for a given argument value. Overload + and - operators for
addition and subtraction of two polynomials and the unary
operator * which
return true or false when the corresponding quadratic equation
has or has not real roots. Overload the stream operators << and >>. Demonstrate
all these functions and operators.
7. Define a class Polynomial
that stores the coefficients of a polynomial of n-th degree in a
dynamically allocated array of integers.
Supply the "big three" memory management functions. Use this
class to demonstrate
(a) the difference between initialization
Polynomial s;
Polynomial t = s;
and assignment
Polynomial s;
Polynomial t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply a member function which calculates the value of a
polynomial for a given argument value. Overload + and - operators for
addition and subtraction of two polynomials (with degrees m and n, and generally m not equal to n) and * for multiplying a
polynomial with a real number. Overload the stream operators << and >>. Demonstrate
all these functions and operators.
8. Define a class Vector
that stores n-dimensional
vector,
by keeping its elements in a dynamically allocated array of
integers. Supply the "big three" memory management functions.
Use this class to demonstrate
(a) the difference between initialization
Vector s;
Vector t = s;
and assignment operation
Vector s;
Vector t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply a friend function which calculates the linear dependence
and independence of two vectors (bool return value). Overload + and - operators for
addition and subtraction of two vectors and * for multiplying a
vector with a real number. Overload the stream operators << and >>. Demonstrate
all these functions and operators.
9. Define a class Matrix2
that stores two dimensional matrix, by keeping its elements in a
dynamically allocated array of integers (int **a;).
Supply the "big three" memory management functions. Use this
class to demonstrate
(a) the difference between initialization
Matrix2 s;
Matrix2 t = s;
and assignment operation
Matrix2 s;
Matrix2 t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply a member function which calculates the rank of the
matrix. Overload +
operator for addition of two matrices, * for multiplying a
matrix with a real number and the unary ~ operator for
calculating the inverse matrix. Overload the stream operators << and >>. Demonstrate
all these functions and operators.
10. Define a class Biginteger
that stores arbitrary large integers, by keeping their digits in
a dynamically allocated array of integers.
Supply the "big three" memory management functions. Use this
class to demonstrate
(a) the difference between initialization
Biginteger s;
Biginteger t = s;
and assignment operation
Biginteger s;
Biginteger t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply a constructor Biginteger(string)
that reads a sequence of digits from a string. Overload + and - operators to add and
subtract the digit sequences. Overload the stream operators << and >>. Demonstrate
all these functions and operators.
11. Define a class Date
that stores day, month and year in a dynamically allocated array
of integers.
Supply the "big three" memory management functions. Use this
class to demonstrate
(a) the difference between initialization
Date s;
Date t = s;
and assignment operation
Date s;
Date t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply get and set member functions
for day, month and year. Overload ++ and -- operators (prefix and postfix forms) to
set a new date - a day later or before the argument (current)
value, and the stream operators << and >>. Demonstrate all these functions
and operators.
12. Define a class Set that
stores
integers
in
a dynamically allocated array of integers. In a set, the order
of elements does not matter, and every element can occur at most
once.
Supply the "big three" memory management functions. Use this
class to demonstrate
(a) the difference between initialization
Set s;
Set t = s;
and assignment
Set s;
Set t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply the add and
remove member
functions to add and remove set elements; size and contains member
functions. Overload the << and >> operators.
Demonstrate all these functions and operators.
13. Define a class Multiset
that stores integers in a dynamically allocated array of
integers. In a multiset, the order of elements does not matter,
and elements can occur many times.
Supply the "big three" memory management functions. Use this
class to demonstrate
(a) the difference between initialization
Multiset a;
Multiset b = a;
and assignment
Multiset s;
Multiset t;
s = t;
(b) the fact that all constructed objects are automatically
destroyed
(c) the fact that the copy constructor is invoked if an object
is passed by value to a function
(d) the fact that the copy constructor is not invoked when a
parameter is passed by reference
(e) the fact that the copy constructor is used to copy a return
value to the caller.
Supply add and remove member functions
to add and remove set elements; int size(), bool contains(int f) and int count(int f) member
functions.
The last function counts appearances of the number f in the multiset.
Overload the ++
operator (prefix and postfix forms) for doubling all elements,
which contain only once. Also overload -- operator (prefix and
postfix forms) in such a way that the set (a++)-- is the same as
a. Overload the
stream operators <<
and >>.
Demonstrate all these functions and operators.