#include #include using namespace std; class Point { private: int x, y; int niza[5]; public: Point() {} Point(int _x, int _y) { x = _x; y = _y; } ~Point() {} void print() { cout << x << " " << y << endl; } Point operator + (Point p) { Point temp; temp.x = x + p.x; temp.y = y + p.y; return temp; } Point operator - (Point p) { Point temp; temp.x = x - p.x; temp.y = y - p.y; return temp; } Point operator * (Point p) { Point temp; temp.x = x * p.x; temp.y = y * p.y; return temp; } Point operator / (Point p) { Point temp; temp.x = x / p.x; temp.y = y / p.y; return temp; } bool operator < (Point p) { if(x < p.x and y < p.y) { return true; } return false; } bool operator > (Point p) { if(x > p.x and y > p.y) { return true; } return false; } bool operator <= (Point p) { if(x <= p.x and y <= p.y) { return true; } return false; } bool operator >= (Point p) { if(x >= p.x and y >= p.y) { return true; } return false; } bool operator == (Point p) { if(x == p.x and y == p.y) { return true; } return false; } bool operator != (Point p) { if(x == p.x and y == p.y) { return true; } return false; } Point& operator += (Point p) { x += p.x; y += p.y; return *this; } Point& operator -= (Point p) { x -= p.x; y -= p.y; return *this; } Point& operator *= (Point p) { x *= p.x; y *= p.y; return *this; } Point& operator /= (Point p) { x /= p.x; y /= p.y; return *this; } Point& operator ++ (int p) { //postfix x++; y++; return *this; } Point& operator ++ () { // prefix ++x; ++y; return *this; } Point& operator -- (int p) { //postfix x--; y--; return *this; } Point& operator -- () { --x; --y; return *this; } Point& operator = (Point p) { x = p.x; y = p.y; return *this; } void set_niza(int a[5], int n) { for(int i = 0; i < n; i++) { niza[i] = a[i]; } } int& operator [] (int indeks) { return niza[indeks]; } friend ostream& operator << (ostream &stream, Point p); friend istream& operator >> (istream &stream, Point &p); }; ostream& operator << (ostream &stream, Point p) { stream << "X: " << p.x << endl; stream << "Y: " << p.y << endl; return stream; } istream& operator >> (istream &stream, Point &p) { stream >> p.x; stream >> p.y; return stream; } int main() { Point p1; cin >> p1; int a[5] = {1, 2, 3, 4, 5}; p1.set_niza(a, 5); cout << p1[2] << endl; return 0; }