#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;
}