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

来源:互联网 发布:数据拟合方法 编辑:程序博客网 时间:2024/06/05 23:25
/** 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;}

心得体会:理解更深刻。

0 0