#include <iostream>

#ifdef __BORLANDC__
  #include <math>
#else
  #include <cmath>
  using namespace std;
#endif

struct Punkt
  {
   double x,y;
   void Ustaw(double px,double py);
   void Ustaw(const Punkt &P); // inline napisano na dole
   void Ustaw() { Ustaw(0,0); } // inline bo w strukturze
   void Drukuj(ostream &s)const;
   void Drukuj()const { Drukuj(cout); }
   double Odleglosc(double px,double py)const; //(x,y) - (px,py)
   double Odleglosc(const Punkt &P)const { return(Odleglosc(P.x,P.y)); } //(x,y) - P
   double Odleglosc()const { return(Odleglosc(0,0)); } //(x,y) - (0,0)
  };

void Punkt::Ustaw(double px,double py)
  {
   x=px;
   y=py;
  }

inline void Punkt::Ustaw(const Punkt &P)
  {
   Ustaw(P.x,P.y);
  }

void Punkt::Drukuj(ostream &s)const
  {
   s<<'('<<x<<','<<y<<')';
  }

double Punkt::Odleglosc(double px,double py)const
  {
   //double dx=px-x,dy=py-y;
   //return(sqrt(dx*dx+dy*dy));
   px-=x; // px=dx=px-x
   py-=y; // py=dy=py-y
   return(sqrt(px*px+py*py));
  }

int main()
  {
   const Punkt D={5,12};
   Punkt A,B,C;
   A.Ustaw(3,4);
   B.Ustaw();
   C.Ustaw(D);
   A.Drukuj(); cout<<endl;
   B.Drukuj(); cout<<endl;
   C.Drukuj(); cout<<endl;
   D.Drukuj(); cout<<endl;
   cout<<"Odleglosc ";
     A.Drukuj();
       cout<<"-(0,0) "<<A.Odleglosc()<<endl;
   cout<<"Odleglosc ";
     B.Drukuj();
       cout<<"-(16,12) "<<B.Odleglosc(16,12)<<endl;
   cout<<"Odleglosc ";
     D.Drukuj();
       cout<<'-';
         A.Drukuj();
           cout<<' '<<D.Odleglosc(A)<<endl;

   return(0);
  }

