第06周:项目一:体验常成员函数

/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 作    者:王颖
* 完成日期:2014 年 4 月 4 日
* 版 本 号:v1.0
* 输入描述: 无
* 问题描述:体验常成员函数。
* 设计平面坐标点类,计算两点之间距离、到原点距离、
* 关于坐标轴和原点的对称点等。在设计中,由于求距
* 离、求对称点等操作对原对象不能造成任何改变,所
* 以,将这些函数设计为常成员函数是合适的,能够避
8 免数据成员被无意更改。
* 程序输出:略
* 问题分析:略
* 算法设计:略
*/
#include <iostream>
#include<cmath>
using namespace std;
class CPoint
{
private:
    double x;  // 横坐标
    double y;  // 纵坐标
public:

    CPoint(double xx=0,double yy=0);
    double Distance1(CPoint p) const;   // 两点之间的距离(一点是当前点,另一点为参数p)
    double Distance0() const;            // 到原点的距离
    CPoint SymmetricAxis(char style) const;//style取'x','y'和'o'分别表示按x轴, y轴, 原点对称
    void input();  //以x,y 形式输入坐标点
    void output(); //以(x,y) 形式输出坐标点
};
CPoint t;
CPoint::CPoint(double xx,double yy)
{
    x=xx;
    y=yy;
}
double CPoint::Distance1(CPoint p) const
{
    return (sqrt((t.x-p.x)*(t.x-p.x)+(t.y-p.y)*(t.y-p.y)));
}
double CPoint::Distance0() const
{
    return(sqrt(t.x*t.x+t.y*t.y));
}
void CPoint::input()
{
    cout<<"请输入坐标点:"<<endl;
    cin>>x>>y;
}
CPoint CPoint::SymmetricAxis(char style) const
{
    switch(style)
    {
    case 'x':
        cout<<"("<<t.x<<","<<'-'<<t.y<<")"<<endl;
        break;
    case 'y':
        cout<<"("<<'-'<<t.x<<","<<t.y<<")"<<endl;
        break;
    case 'o':
        cout<<"("<<'-'<<t.x<<","<<'-'<<t.y<<")"<<endl;
        break;
    }
}
void CPoint::output()
{
    cout<<"点为:"<<endl;
    cout<<"("<<x<<","<<y<<")"<<endl;
}
int main()
{
    CPoint p;
    char s;
    t.input();
    p.input();
    cout<<"到两点的距离为:"<<endl;
    cout<<p.Distance1(p)<<endl;
    cout<<"到原点的距离:"<<endl;
    cout<<p.Distance0()<<endl;
     cout<<"请输入关于 轴对称:"<<endl;
    cin>>s;
    p.SymmetricAxis(s);
    return 0;
}

第06周:项目一:体验常成员函数_第1张图片

心得体会:理解更深刻。

你可能感兴趣的:(C++,类,对象,Class,结构)