Untitled
unknown
plain_text
a year ago
2.0 kB
7
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