#include <iostream>
#include<cmath>
using namespace std;
class Point{
private:
double x,y;
public:
Point(double x, double y){
this->x=x;
this->y=y;
}
void setVar(double x, double y){
this->x=x;
this->y=y;
}
double getX(){return x;}
double getY(){return y;}
void add(Point p){
x+=p.x;
y+=p.y;
}
// double calculateDistFromOrigin(){
// return sqrt(x*x+y*y);
// }
};
class Point3D : private Point{
private:
double z;
public:
Point3D(double x, double y, double z): Point(x, y){
this->z=z;
}
// void setVar(double x, double y, double z){
// Point::setVar(x,y); ////
// this->z=z;
// }
void setZ(double z){
this->z=z;
}
void setVarDelegate(double x, double y){
setVar(x, y);
}
double getXDel(){return getX();}
double getYDel(){return getY();}
double getZ(){return z;}
void add(Point3D p){
Point::add(Point(p.getX(), p.getY()));
// Point::add(Point(p.x, p.x));
z+=p.z;
}
// double calculateDistFromOrigin(){
// return sqrt(getX()*getX()+getY()*getY()+getZ()*getZ());
// }
};
int main(){
Point p1(2.5, 3.2);
p1.add(Point(5.0, 5.0));
cout<<"(x, y, z)="<<"("<<p1.getX()<<", "<<p1.getY()<<")"<<endl;
Point3D p(1.2, 2.5, 3);
p.add(Point3D(5.0, 5.0, 5.0));
//cout<<"(x,y,z)="<<"("<<p.getX()<<","<<p.getY()<<","<<p.getZ()<<")"<<endl;
cout<<"(x, y, z)="<<"("<<p.getXDel()<<", "<<p.getYDel()<<", "<<p.getZ()<<")"<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxjbWF0aD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY2xhc3MgUG9pbnR7CnByaXZhdGU6CiAgICBkb3VibGUgeCx5OwpwdWJsaWM6CiAgICBQb2ludChkb3VibGUgeCwgZG91YmxlIHkpewogICAgICAgIHRoaXMtPng9eDsKICAgICAgICB0aGlzLT55PXk7CiAgICB9CiAgICB2b2lkIHNldFZhcihkb3VibGUgeCwgZG91YmxlIHkpewogICAgICAgIHRoaXMtPng9eDsKICAgICAgICB0aGlzLT55PXk7CiAgICB9CiAgICBkb3VibGUgZ2V0WCgpe3JldHVybiB4O30KICAgIGRvdWJsZSBnZXRZKCl7cmV0dXJuIHk7fQogICAgdm9pZCBhZGQoUG9pbnQgcCl7CiAgICAgICAgeCs9cC54OwogICAgICAgIHkrPXAueTsKICAgIH0KICAgIC8vIGRvdWJsZSBjYWxjdWxhdGVEaXN0RnJvbU9yaWdpbigpewogICAgLy8gICAgIHJldHVybiBzcXJ0KHgqeCt5KnkpOwogICAgLy8gfQp9OwoKCmNsYXNzIFBvaW50M0QgOiBwcml2YXRlIFBvaW50ewpwcml2YXRlOgogICAgZG91YmxlIHo7CnB1YmxpYzoKICAgIFBvaW50M0QoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeik6IFBvaW50KHgsIHkpewogICAgICAgIHRoaXMtPno9ejsKICAgIH0KICAgIC8vIHZvaWQgc2V0VmFyKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopewogICAgLy8gICAgIFBvaW50OjpzZXRWYXIoeCx5KTsgLy8vLwogICAgLy8gICAgIHRoaXMtPno9ejsKICAgIC8vIH0KICAgIHZvaWQgc2V0Wihkb3VibGUgeil7CiAgICAgICAgdGhpcy0+ej16OwogICAgfQogICAgCiAgICB2b2lkIHNldFZhckRlbGVnYXRlKGRvdWJsZSB4LCBkb3VibGUgeSl7CiAgICAgICAgc2V0VmFyKHgsIHkpOwogICAgfQogICAgCiAgICBkb3VibGUgZ2V0WERlbCgpe3JldHVybiBnZXRYKCk7fQogICAgZG91YmxlIGdldFlEZWwoKXtyZXR1cm4gZ2V0WSgpO30KICAgIGRvdWJsZSBnZXRaKCl7cmV0dXJuIHo7fQogICAgCiAgICB2b2lkIGFkZChQb2ludDNEIHApewogICAgICAgIFBvaW50OjphZGQoUG9pbnQocC5nZXRYKCksIHAuZ2V0WSgpKSk7CiAgICAgICAgLy8gUG9pbnQ6OmFkZChQb2ludChwLngsIHAueCkpOwogICAgICAgIHorPXAuejsKICAgIH0KICAgIAogICAgLy8gZG91YmxlIGNhbGN1bGF0ZURpc3RGcm9tT3JpZ2luKCl7CiAgICAvLyAgICAgcmV0dXJuIHNxcnQoZ2V0WCgpKmdldFgoKStnZXRZKCkqZ2V0WSgpK2dldFooKSpnZXRaKCkpOwogICAgLy8gfQp9OwoKCmludCBtYWluKCl7CiAgICBQb2ludCBwMSgyLjUsIDMuMik7CiAgICBwMS5hZGQoUG9pbnQoNS4wLCA1LjApKTsKICAgIAogICAgY291dDw8Iih4LCB5LCB6KT0iPDwiKCI8PHAxLmdldFgoKTw8IiwgIjw8cDEuZ2V0WSgpPDwiKSI8PGVuZGw7CiAgICAKICAgIFBvaW50M0QgcCgxLjIsIDIuNSwgMyk7CiAgICBwLmFkZChQb2ludDNEKDUuMCwgNS4wLCA1LjApKTsKICAgIAogICAgLy9jb3V0PDwiKHgseSx6KT0iPDwiKCI8PHAuZ2V0WCgpPDwiLCI8PHAuZ2V0WSgpPDwiLCI8PHAuZ2V0WigpPDwiKSI8PGVuZGw7CiAgICBjb3V0PDwiKHgsIHksIHopPSI8PCIoIjw8cC5nZXRYRGVsKCk8PCIsICI8PHAuZ2V0WURlbCgpPDwiLCAiPDxwLmdldFooKTw8IikiPDxlbmRsOwogICAgCiAgICByZXR1cm4gMDsKfQo=