#include #include #include using namespace std; class PointClass { public: void SetCoords(int x, int y); /* Sets xCoord and yCoord values */ double GetDistance(PointClass ptB); /* Returns distance to ptB */ void Print(); /* Prints "(xCoord, yCoord)\n" */ int GetXcoord(); /* Returns xCoord */ int GetYcoord(); /* Returns yCoord */ PointClass operator+(PointClass B); /* Overloads + to add two points. (a, b) + (c, d) = (a+b, c+d) */ private: int xCoord; int yCoord; }; class TriangleClass { public: void SetPoints(PointClass A, PointClass B, PointClass C); double GetArea(); void Print(); private: PointClass A; PointClass B; PointClass C; }; void PointClass::SetCoords(int x, int y) { xCoord = x; yCoord = y; } double PointClass::GetDistance(PointClass ptB) { return sqrt( pow(xCoord - ptB.xCoord, 2) + pow(yCoord - ptB.yCoord, 2) ); } void PointClass::Print() { cout << "(" << xCoord << ", " << yCoord << ")\n"; } int PointClass::GetXcoord() { return xCoord; } int PointClass::GetYcoord() { return yCoord; } PointClass PointClass::operator+(PointClass B) { PointClass newPoint; newPoint.SetCoords(xCoord + B.xCoord, yCoord + B.yCoord); return newPoint; } void TriangleClass::SetPoints(PointClass A, PointClass B, PointClass C) { this->A = A; this->B = B; this->C = C; } double TriangleClass::GetArea() { /* Using Heron's Formula */ double a = A.GetDistance(B); double b = B.GetDistance(C); double c = C.GetDistance(A); double s = (a + b + c) / 2; double area = sqrt(s * (s - a) * (s - b) * (s - c)); return area; } void TriangleClass::Print() { cout << "( (" << A.GetXcoord() << ", " << A.GetYcoord() << "), "; cout << "(" << B.GetXcoord() << ", " << B.GetYcoord() << "), "; cout << "(" << C.GetXcoord() << ", " << C.GetYcoord() << ") )\n"; } int main() { PointClass ptA; PointClass ptB; PointClass ptC; PointClass ptD; TriangleClass triangleABC; ptA.SetCoords(0, 0); ptB.SetCoords(0, 3); ptC.SetCoords(4, 0); ptD = ptA + ptB; /* Using the overloaded + operator */ triangleABC.SetPoints(ptA, ptB, ptC); assert(ptA.GetDistance(ptB) == 3); /* Testing distance function */ assert(ptD.GetXcoord() == 0); /* Checking to see if point adding works as expected */ assert(ptD.GetYcoord() == 3); assert(triangleABC.GetArea() == 6); /* Testing area function */ cout << "ALL TESTS PASSED!\n"; return 0; }