/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.* 文件名称:用三种函数求距离
* 作 者: 郭岩岩
* 完成日期:2012 年4 月 2日
* 版 本 号: vc.1
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
*程序头部的注释结束
*/
#include<iostream>
#include<Cmath>
using namespace std;
class Cpoint
{private:
double x; // 横坐标
double y; // 纵坐标
public:
Cpoint(double xx=0,double yy=0):x(xx),y(yy){}
double distance(Cpoint &p);
void input();
void output();
friend double distance2 (Cpoint &p,Cpoint &p1);
double get_x(){return x;}
double get_y(){return y;}
};
double distance3 (Cpoint &p1,Cpoint &p2);
double Cpoint::distance(Cpoint &p)
{
double d;
d=sqrt((p.x -x)*(p.x -x)+(p.y -y)*(p.y-y));
cout<<"distance1:两点之间的距离为:"<<d<<endl;
return d;
}
double distance2 (Cpoint &p1,Cpoint &p2)
{
double d;
d=sqrt((p1.x -p2.x)*(p1.x -p2.x)+(p1.y -p2.y)*(p1.y-p2.y));
cout<<"distance2:两点之间的距离为:"<<d<<endl;
return d;
}
double distance3 (Cpoint &p1,Cpoint &p2)
{
double a,b,d;
a=(p1.get_x()-p2.get_x())*(p1.get_x()-p2.get_x());
b=(p1.get_y()-p2.get_y())*(p1.get_y()-p2.get_y());
d=sqrt(a+b);
cout<<"distance3:两点之间的距离为:"<<d<<endl;
return d;
}
void Cpoint::input()
{
bool point;
point=true;
cout<<"请输入一个点的横纵坐标:(以“x,y”的形式输入)";
char c;
while(point)
{
cin>>x>>c>>y;
if(c!=',')
{
cout<<"格式不正确,请从新输入。";
}
else
{
point=false;
}
}
}
void Cpoint::output()
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
void main()
{
Cpoint C1,C2;
C1.input ();
C1.output ();
C2.input ();
C2.output ();
C1.distance(C2);
distance2(C1,C2);
distance3(C1,C2);
}
![](https://img-my.csdn.net/uploads/201204/03/1333429000_7634.JPG)
上级感言:代码不可貌相
经验积累:在函数的参数中使用引用变量是个不错的选择
友元函数可以直接访问私有成员