#include<iostream>
#include"Cpoint.h"
using namespace std;
int main()
{
Cpoint a(3,4),b,c;
double dA1,dA2;
cout<<"输入b点的坐标(以x,y的形式)"<<endl;
b.input();
dA1=a.Distance1(b);
cout<<"两点之间的距离为:"<<dA1<<endl;
cout<<endl;
dA2=a.Distance0();
cout<<"a点到原点的距离为:"<<dA2<<endl;
char style;
cout<<"x.关于x对称"<<endl;
cout<<"y.关于y对称"<<endl;
cout<<"o.关于o对称"<<endl;
cout<<"q.退出"<<endl;
while(cin>>style&&style!='q')
{
c=a.SymmetricAcis(style);
c.output();
}
return 0;
}
#ifndef CPOINT_H_INCLUDED
#define CPOINT_H_INCLUDED
class Cpoint
{
private:
double x;
double y;
public:
Cpoint(double xx=0,double yy=0);
double Distance1(Cpoint p) const;
double Distance0() const;
Cpoint SymmetricAcis(char style) const;
void input();
void output();
};
#endif // CPOINT_H_INCLUDED
#include<iostream>
#include"Cpoint.h"
#include<cmath>
using namespace std;
Cpoint::Cpoint(double xx,double yy)
{
x=xx;
y=yy;
}
void Cpoint::input()
{
double a,b;
char c;
while(1)
{
cin>>a>>c>>b;
if(c==',')
{
x=a;
y=b;
break;
}
else
cout<<"格式错误";
}
}
void Cpoint::output()
{
cout<<'('<<x<<','<<y<<')'<<endl;
}
double Cpoint::Distance1(Cpoint p) const
{
double dDist_a;
dDist_a=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
return dDist_a;
}
double Cpoint::Distance0() const
{
double dDist_o;
dDist_o=sqrt(x*x+y*y);
return dDist_o;
}
Cpoint Cpoint::SymmetricAcis(char style) const
{
Cpoint p(this->x,this->y);//用复制构造函数时,写作p(*this)
switch(style)
{
case 'x':
p.y=-y;
break;
case 'y':
p.x=-x;
break;
case 'o':
p.x=-x;
p.y=-y;
break;
}
return p;
}
Cpoint SymmetricAcis(char style) const;
返回为对象的函数,着实难懂呀。