关闭

六周任务三

310人阅读 评论(0) 收藏 举报
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:                              
* 作    者:   张启立                          
* 完成日期:   2012      年   3    月    28   日
* 版 本 号:          

* 对任务及求解方法的描述部分
* 输入描述:   
* 问题描述:   设计平面坐标点类,计算两点间的距离,到原点的距离以及关于x轴,y轴,原点对称的点.
* 程序输出: 
* 程序头部的注释结束
*/

#include < iostream >

#include < cmath >

using namespace std;
 
enum SymmetricStyle { axisx, axisy, point };//分别表示按x轴, y轴, 原点对称

class CPoint

{

private:

	double x;  // 横坐标

	double y;  // 纵坐标

public:

	CPoint ( double xx=0 , double yy=0  ) ;

	double Distance ( CPoint p ) const;   // 两点之间的距离(一点是当前点,另一点为参数p)

	double Distance0 ( ) const;          // 到原点的距离

	CPoint SymmetricAxis ( SymmetricStyle style) const;   // 返回对称点

	void input ( );  //以x,y 形式输入坐标点

	void output ( ); //以(x,y) 形式输出坐标点

};

CPoint :: CPoint(double xx,double yy)  
{  
    x=xx;  
    y=yy;  
}  

// 两点之间的距离(一点是当前点,另一点为参数p)

double CPoint::Distance ( 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 ( SymmetricStyle style) const
{
	CPoint p;

	switch ( style )
	{

	case axisx:

		p.y = -y; break;

	case axisy:

		p.x = -x; break;

	case point:

		p.x = -x;

		p.y = -y;
	}
	return p;
}

//以x,y 形式输入坐标点

void CPoint:: input ( )

{

	char ch ;

	while ( 1 )
	{
		cin >> x >> ch >> y;

		if ( ch != ',' )
		{

			cout << " 你输入的格式错误 " << endl;

		}

		else

		{

			break;

		}

	}

}

void CPoint::output ( )//以(x,y) 形式输出坐标点

{

	cout << x <<',' << y << endl;
	
}
 
void main ( )

{
	double distance;

	CPoint p1 , p2 , p ;

	cout << "请分别输入两点坐标:格式为  x,y " << endl;

	p1.input ();

	p2.input ();

	distance = p1.Distance ( p2 );

	cout << "两点的距离为:" << distance << endl;

	distance = p1.Distance0();

	cout << "点距离坐标原点的距离为 " << distance << endl;

	p = p1.SymmetricAxis ( axisx );

	cout << "关于x轴对称的点:"  << endl;

	p.output();

	p = p1.SymmetricAxis ( axisy );

	cout << "关于y轴对称的点:" << endl;

	p.output();

	p = p1.SymmetricAxis ( point );

	cout<<"关于原点对称的点坐标为: "<<endl;

	p.output();
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:20024次
    • 积分:515
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    文章存档