1. 程式人生 > >採用成員函式和友元函式計算給定兩個座標點之間的距離

採用成員函式和友元函式計算給定兩個座標點之間的距離

設計一個用來表示直角座標系的Location類,在主程式中建立類Location的兩個物件A和B,要求A的座標點在第3象限,B的座標點在第2象限,分別採用成員函式和友元函式計算給定兩個座標點之間的距離,要求按如下格式輸出結果:

A(x1,y1), B(x2,y2),

Distance1=d1

Distance2=d2

其中:x1、y1、x2、y2為指定座標值,d1和d2為兩個座標點之間的距離。

#include<iostream>
#include<cmath>
using namespace std;
class Location{
  public:
	  Location(double a ,double b);//建構函式
	  double getx();//成員函式,取x座標值
	  double gety();//成員函式,取y座標值
	  double distance(Location&d);//成員函式,求給定兩點之間的距離
	  friend double distance1(Location&,Location&);//友元函式,求給定兩點之間
  private:
	  double x,y;
};
Location::Location(double a,double b)//建構函式的定義; 
{  x=a;
   y=b;
}
double Location:: getx()//輸出x; 
{   return x;
}
double Location:: gety()//輸出y;
{   return y;
}
double Location::distance(Location&d)
{  	double d1;
    d1=sqrt((this->x-d.x)*(this->x-d.x)+(this->y-d.y)*(this->y-d.y));
    //this指標是包含在每一個成員函式中的一個特殊指標,它是指向本類物件的一個指標,
	//它的值未被呼叫的成員函式所在物件的地址,在這裡可以寫成A.x,A.y; 
    cout<<"Distance1="<<d1<<endl;
    return 0;
}
double distance1(Location& c,Location& d)
{    double d2;
	 d2=sqrt((c.x-d.x)*(c.x-d.x)+(c.y-d.y)*(c.y-d.y));
     cout<<"Distance2="<<d2<<endl;
     return 0;
}
int main() 
{ 
Location A(-1,-1);
Location B(-1,1);
cout<<"A("<<A.getx()<<","<<A.gety()<<") , B("<<B.getx()<<","<<B.gety()<<")"<<endl;
 A.distance(B);
 distance1(A,B);
 return 0;
}