/*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!
第六週項目1體驗常成員函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.