#include #include enum quadrant {border, first, second, third, fourth, error}; class Point { private: int x, y; quadrant quad; int color; void determineQuad () { if (x == 0 || y == 0) quad = border; else if (x > 0 && y > 0) quad = first; else if (x < 0 && y > 0) quad = second; else if (x < 0 && y < 0) quad = third; else if (x > 0 && y < 0) quad = fourth; else quad = error; } public: // the copy constructor Point (const Point & pt) { x = pt.x; y = pt.y; quad = pt.quad; cout << "Copy Constructor was called" << endl; } /* OR Point (const Point & pt) :x(pt.x), y(pt.y), quad(pt.quad) {} */ Point (int newX = 0, int newY = 0) :x(newX), y(newY) { determineQuad(); cout << "Constructor was called" << endl; } void setX (int newX) { x = newX; determineQuad(); } void setY (int newY) { y = newY; determineQuad(); } void setXY (int newX = 0, int newY = 0) { x = newX; y = newY; determineQuad(); } int getX () { return x; } int getY () { return y; } quadrant getQuad () { return quad; } void printToCout () { cout << "Coord (" << x << "," << y << ") Quad: " << quad << endl; } }; void printQuad (Point pt) { int q = pt.getQuad(); if (q == 0) cout << "Border"; else if (q == 1) cout << "First"; else if (q == 2) cout << "Second"; else if (q == 3) cout << "Third"; else if (q == 4) cout << "Fourth"; else cout << "Error"; } Point perturbPoint (Point & pt) { Point temp; int x = pt.getX(); int y = pt.getY(); if (rand()%2 == 0) { if (rand()%2 == 0) x++; else x--; } else { if (rand()%2 == 0) y++; else y--; } cout << "Setting perturbed point values." << endl; temp.setXY(x,y); return temp; } int main () { Point pt1, pt2; Point pt3 (-5, -8); Point pt4 (pt3); Point pt5; pt1.setX (15); pt1.setY (-2); cout << "pt1.x: " << pt1.getX() << ", pt1.y " << pt1.getY() << endl; pt2.setXY (-2, 3); cout << "pt2.x: " << pt2.getX() << ", pt2.y " << pt2.getY() << endl; cout << "pt1.quad: " << pt1.getQuad() << endl; cout << "pt2.quad: " << pt2.getQuad() << endl; pt3.setX (5); pt3.setY (8); pt1.printToCout(); pt2.printToCout(); pt3.printToCout(); pt4.printToCout(); cout << endl << "Printing text of Quadrant for pt1: " ; printQuad (pt1); cout << endl; cout << endl << "Perturbing point pt1. " << endl; pt1.printToCout(); pt5 = perturbPoint(pt1); pt5.printToCout(); }