第六週項目1體驗常成員函數

/*Copyright (c) 2011, 煙臺大學計算機學院
* All rights reserved.
* 作    者: 石堯
* 完成日期:2014 年04 月 01日
* 版 本 號:v1.0
*
* 問題描述:體驗常成員函數。
* 樣例輸入:略.
* 樣例輸出:略。
* 問題分析:爲了避免數據成員被無意更改,所以設置成常成員函數。
*/#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::Cpoint(double xx,double yy)
{
    x=xx;
    y=yy;
}
void Cpoint::input()//輸入座標
{
    char ch;
    cout<<"請輸入座標(以(x,y)的形式)"<<endl;
    while(1)
    {
        cin>>x>>ch>>y;
        if(ch==',') break;
        cout<<"格式不對!"<<endl;
        }


}
double Cpoint::Distance1(Cpoint p) const//p作爲形參是兩個函數的接入口p.x,p.y是輸入的p2
{
    double d;
    d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
    return d;
}
double Cpoint::Distance0 () const
{
    double d;
    d=sqrt(x*x+y*y);
    return d;
}
Cpoint Cpoint::symmetricAxis(char style) const
{
    Cpoint p(this->x,this->y);//p是代表(x,y)
    switch(style)
    {
        case'x':
        p.y=-y;break;
        case'y':
        p.x=-x;break;
        case'o':
        p.x=-x;p.y=-y;
    }
    return p;
}
void Cpoint::output()
{
    cout<<"("<<x<<","<<y<<")"<<endl;
}
int main()
{
    double distance;
    Cpoint p1,p2,p;
    cout<<"請輸入第一個點:";
    p1.input();
    cout<<"請輸入第二個點:";
    p2.input();
    distance=p1.Distance1(p2);
    cout<<"兩點之間的距離:"<<distance<<endl;
    distance=p1.Distance0();
    cout<<"第一個點到原點的距離:"<<distance<<endl;
    p=p1.symmetricAxis('x');
    cout<<"第一個點關於x軸對稱:";
    p.output();
    p=p1.symmetricAxis('y');
    cout<<"第一個點關於y軸對稱:";
    p.output();
    p=p1.symmetricAxis('o');
    cout<<"第一個點關於原點對稱:";
    p.output();
    return 0;
}
心得體會:Distance1(Cpoint p) const常成員函數中的p是形式參數,相當於兩個函數的接口
如果調用就會方便的把實際參數傳入到函數中進行運算!
Cpoint p(this->x,this->y)中的p是代表(x,y)的值,如果將(this->x,this->y)去掉則p將只能代表x!

發佈了84 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章