Untitled
unknown
plain_text
a year ago
2.0 kB
4
Indexable
#ifndef POLYGON_H #define POLYGON_H #include <vector> class Point { public: int x, y; Point(int x, int y) : x(x), y(y) {} }; class Polygon { private: std::vector<Point *> pts; public: Polygon(std::vector<Point *> pts); Polygon(Point p1, Point p2, Point p3); Polygon(const Polygon &other); ~Polygon(); void addPoint(Point *pt); Point operator[](int index); Polygon operator+(const Point &pt); }; #endif #include "Polygon.h" Polygon::Polygon(std::vector<Point *> pts) : pts(pts) {} Polygon::Polygon(Point p1, Point p2, Point p3) { pts.push_back(new Point(p1)); pts.push_back(new Point(p2)); pts.push_back(new Point(p3)); } Polygon::Polygon(const Polygon &other) { for (Point *pt : other.pts) { pts.push_back(new Point(pt->x, pt->y)); } } Polygon::~Polygon() { for (Point *pt : pts) { delete pt; } } void Polygon::addPoint(Point *pt) { pts.push_back(pt); } Point Polygon::operator[](int index) { return *(pts[index]); } Polygon Polygon::operator+(const Point &pt) { Polygon newPolygon(*this); newPolygon.addPoint(new Point(pt)); return newPolygon; } #include "Polygon.h" #include <iostream> int main() { Point p1(0, 0); Point p2(1, 1); Point p3(2, 2); // Creating a polygon using the constructor with three points Polygon polygon1(p1, p2, p3); // Creating a polygon using the vector of points constructor std::vector<Point *> points = { &p1, &p2, &p3 }; Polygon polygon2(points); // Copying polygon1 to polygon3 Polygon polygon3(polygon1); // Adding a new point to polygon1 Point p4(3, 3); polygon1.addPoint(&p4); // Using the [] operator to access points of polygon1 for (int i = 0; i < 4; ++i) { Point pt = polygon1[i]; std::cout << "Point " << i + 1 << ": (" << pt.x << ", " << pt.y << ")" << std::endl; } // Adding a point to polygon3 using the + operator Polygon polygon4 = polygon3 + p4; return 0; }
Editor is loading...
Leave a Comment