#include <cmath>
#include <iostream>
using namespace std;
class Point
{
private://Данные -члены(закрытые)
int x,y;
public: //функции -члены
friend Point operator+(Point pt1,Point pt2);
void set(int new_x,int new_y);
int get_x();
int get_y();
double operator%(Point &pt);
};
double Point::operator%(Point &pt)
{
int d1=pt.x-x;
int d2=pt.y-y;
return sqrt((double)(d1*d1+d2*d2));
}
Point operator+(Point pt1,Point pt2){
Point new_pt;
int a=pt1.x+pt2.x;
int b=pt1.y+pt2.y;
new_pt.set(a,b);
return new_pt;
}
int main()
{
Point pt1,pt2;
pt1.set(10,20);
cout<<"pt1 is"<<pt1.get_x();
cout<<","<<pt1.get_y()<<endl;
pt2.set(-5,-25);
cout<<"pt2 is"<<pt2.get_x();
cout<<","<<pt2.get_y()<<endl;
pt1.set(20,20);
pt2.set(24,23);
cout<<"расстояние "<<pt1%pt2<<endl;
return 0;
}
void Point::set(int new_x,int new_y)
{
if (new_x<0)
new_x*=-1;
if(new_y<0)
new_y*=-1;
x=new_x;
y=new_y;
}
int Point::get_x()
{
return x;
}
int Point::get_y()
{
return y;
}
ICAgI2luY2x1ZGUgPGNtYXRoPgogICAgI2luY2x1ZGUgPGlvc3RyZWFtPgogICAgIAogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAKICAgIGNsYXNzIFBvaW50CiAgICB7CiAgICBwcml2YXRlOi8v0JTQsNC90L3Ri9C1IC3Rh9C70LXQvdGLKNC30LDQutGA0YvRgtGL0LUpCiAgICBpbnQgeCx5OwogICAgcHVibGljOiAvL9GE0YPQvdC60YbQuNC4IC3Rh9C70LXQvdGLCiAgICBmcmllbmQgUG9pbnQgb3BlcmF0b3IrKFBvaW50IHB0MSxQb2ludCBwdDIpOwogICAgdm9pZCBzZXQoaW50IG5ld194LGludCBuZXdfeSk7CiAgICBpbnQgZ2V0X3goKTsKICAgIGludCBnZXRfeSgpOwogICAgZG91YmxlIG9wZXJhdG9yJShQb2ludCAmcHQpOwogICAgfTsKICAgCiAgICBkb3VibGUgUG9pbnQ6Om9wZXJhdG9yJShQb2ludCAmcHQpCiAgICB7CiAgICBpbnQgZDE9cHQueC14OwogICAgaW50IGQyPXB0LnkteTsKICAgIHJldHVybiBzcXJ0KChkb3VibGUpKGQxKmQxK2QyKmQyKSk7CiAgICB9CiAgUG9pbnQgb3BlcmF0b3IrKFBvaW50IHB0MSxQb2ludCBwdDIpewoJCSBQb2ludCBuZXdfcHQ7CgkJaW50IGE9cHQxLngrcHQyLng7CgkJIGludCBiPXB0MS55K3B0Mi55OwoJCSBuZXdfcHQuc2V0KGEsYik7CgkJIHJldHVybiBuZXdfcHQ7CgkgfSAgICAKaW50IG1haW4oKQp7ClBvaW50IHB0MSxwdDI7CnB0MS5zZXQoMTAsMjApOwpjb3V0PDwicHQxIGlzIjw8cHQxLmdldF94KCk7CmNvdXQ8PCIsIjw8cHQxLmdldF95KCk8PGVuZGw7CnB0Mi5zZXQoLTUsLTI1KTsKY291dDw8InB0MiBpcyI8PHB0Mi5nZXRfeCgpOwpjb3V0PDwiLCI8PHB0Mi5nZXRfeSgpPDxlbmRsOwpwdDEuc2V0KDIwLDIwKTsKcHQyLnNldCgyNCwyMyk7CmNvdXQ8PCLRgNCw0YHRgdGC0L7Rj9C90LjQtSAiPDxwdDElcHQyPDxlbmRsOwoKcmV0dXJuIDA7Cn0gICAKICAgIHZvaWQgUG9pbnQ6OnNldChpbnQgbmV3X3gsaW50IG5ld195KQogICAgewogICAgaWYgKG5ld194PDApCiAgICBuZXdfeCo9LTE7CiAgICBpZihuZXdfeTwwKQogICAgbmV3X3kqPS0xOwogICAgeD1uZXdfeDsKICAgIHk9bmV3X3k7CiAgICB9CiAgICAgCiAgICBpbnQgUG9pbnQ6OmdldF94KCkKICAgIHsKICAgIHJldHVybiB4OwogICAgfQogICAgIAogICAgaW50IFBvaW50OjpnZXRfeSgpCiAgICB7CiAgICByZXR1cm4geTsKICAgIH0=