Untitled

 avatar
unknown
plain_text
10 months ago
2.1 kB
2
Indexable
Polygon.h

#ifndef POLYGON_H
#define POLYGON_H

#include <vector>
#include "Point.h"

class Polygon {
private:
    std::vector<Point *> pts;

public:
    Polygon(std::vector<Point *> points);
    Polygon(Point p1, Point p2, Point p3);

    Polygon(const Polygon &other);

    ~Polygon();

    void addPoint(Point *point);

    Point* operator[](int index);

    Polygon operator+(const Point &point);
};

#endif 







Polygon.cpp

#include "Polygon.h"

Polygon::Polygon(std::vector<Point *> points) : pts(points) {}

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 *p : other.pts) {
        pts.push_back(new Point(*p));
    }
}

Polygon::~Polygon() {
    for (Point *p : pts) {
        delete p;
    }
}

void Polygon::addPoint(Point *point) {
    pts.push_back(point);
}

Point* Polygon::operator[](int index) {
    if (index >= 0 && index < pts.size()) {
        return pts[index];
    } else {
        return nullptr;
    }
}

Polygon Polygon::operator+(const Point &point) {
    Polygon newPolygon(*this);
    newPolygon.addPoint(new Point(point));
    return newPolygon;
}








Polygonmain.cpp


#include <iostream>
#include "Polygon.h"

int main() {
    std::vector<Point *> points = {new Point(0, 0), new Point(1, 0), new Point(1, 1)};
    Polygon poly1(points);

    Polygon poly2(Point(0, 0), Point(1, 0), Point(1, 1));

    Polygon poly3(poly1);

    poly3 = poly3 + Point(2, 2);

    std::cout << "Points of poly1: ";
    for (int i = 0; i < 3; ++i) {
        Point *p = poly1[i];
        if (p) {
            std::cout << "(" << p->getX() << ", " << p->getY() << ") ";
        }
    }
    std::cout << std::endl;

    for (Point *p : points) {
        delete p;
    }

    return 0;
}





Point.h

#ifndef POINT_H
#define POINT_H

class Point {
private:
    int x;
    int y;

public:
    Point(int x = 0, int y = 0) : x(x), y(y) {}

    int getX() const { return x; }
    int getY() const { return y; }
};

#endif
Editor is loading...
Leave a Comment