C++找对象的季节——常成员函数(点和对称点)

来源:互联网 发布:创业软件 吕晴 编辑:程序博客网 时间:2024/05/23 21:35

又到了一周一次的发博文时间了,废话不多说,马上开始:

#include<iostream>#include<cmath>using namespace std;class CPoint{private:    double x;//横坐标。    double y;//纵坐标。public:    CPoint(double=0,double=0);    double distance1(CPoint p) const;    double distance0() const;    CPoint SymmetricAxis(char style) const;//对称,取style为x时表示计算以x轴对称的点,y为以y轴对称的点,o为计算以原点为对称中心的点。    void input();    void output();};int main(){    CPoint point1,point2(5,7),point3;    double distance_1,distance_0;    char style='\0';    point1.input();    distance_1=point1.distance1(point2);    distance_0=point1.distance0();    cout<<"此点与(5,7)点之间的距离为:"<<distance_1<<endl;    cout<<"此点与原点的距离为:"<<distance_0<<endl;    cout<<"输入对称风格:(x为以x轴为对称轴,y为以y轴为对称轴,o为以原点为对称中心,输入0跳出循环。)"<<endl;    while(1)    {        cin>>style;        if(style=='0')            break;        else        {            point3=point1.SymmetricAxis(style);            point3.output();        }    }    point1.output();    point2.output();    point3.output();    return 0;}CPoint::CPoint(double xx,double yy):x(xx),y(yy) {}double CPoint::distance1(CPoint p)const{    return sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));}double CPoint::distance0()const{    return sqrt(x*x+y*y);}CPoint CPoint::SymmetricAxis(char style)const{    CPoint p;    switch(style)    {    case 'x':    {        p.x=x;        p.y=-y;    }    break;    case 'y':    {        p.x=-x;        p.y=y;    }    break;    case 'o':    {        p.x=-x;        p.y=-y;    }    break;    }    return p;}void CPoint::input(){    char c;    cout<<"请以x,y的形式输此点的坐标:";    while(1)    {        cin>>x>>c>>y;        if(c==',')            break;        else            cout<<"输入格式错误,请重新输入。";    }}void CPoint::output(){    cout<<"("<<x<<","<<y<<")"<<'\t';}


通过这个练习,没感觉出来啥常成员函数的特别之处啊,看来是撞错实验还做得不充分。

0 0
原创粉丝点击