7-1 求两点之间距离 (20分)
定义一个Point类,有两个数据成员:x和y, 分别代表x坐标和y坐标,并有若干成员函数。 定义一个函数Distance(), 用于求两点之间的距离。
输入有两行: 第一行是第一个点的x坐标和y坐标; 第二行是第二个点的x坐标和y坐标。
输出两个点之间的距离,保留两位小数。
0 9 3 -4
13.34
代码实现:
第一种:
#include<iostream> #include<cmath> #include<iomanip> using namespace std; class point{ double x,y; public: void set(double a,double b) { x=a; y=b; } friend double Distance(point ob1,point ob2)//这个是定义为全局函数,让该函数可以访问该类的私有成员变量 { return sqrt((ob1.x-ob2.x)*(ob1.x-ob2.x)+(ob1.y-ob2.y)*(ob1.y-ob2.y)); } }; int main(void) { double a1,a2,b1,b2; cin>>a1>>a2>>b1>>b2; point ob1,ob2; ob1.set(a1,a2); ob2.set(b1,b2); cout<<setiosflags(ios::fixed); cout<<setprecision(2)<<Distance(ob1,ob2); }第二种:
#include<iostream> #include<cmath> #include<iomanip> using namespace std; class point{ double x,y; public: void set(double a,double b) { x=a; y=b; } friend double Distance(point ob1,point ob2); }; double Distance(point ob1,point ob2) //把它放在外面,更加清楚这个是全局函数 { return sqrt((ob1.x-ob2.x)*(ob1.x-ob2.x)+(ob1.y-ob2.y)*(ob1.y-ob2.y)); } int main(void) { double a1,a2,b1,b2; cin>>a1>>a2>>b1>>b2; point ob1,ob2; ob1.set(a1,a2); ob2.set(b1,b2); printf("%.2f",Distance(ob1,ob2));//这样也是可以的 }