关闭

C++第六周任务三设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等

标签: 任务c++distanceoutputinputclass
1557人阅读 评论(0) 收藏 举报
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等                              
* 作    者:李洪悬                              
* 完成日期:   2012      年 3      月  28      日
* 版 本 号:          

* 对任务及求解方法的描述部分
* 输入描述: 
* 问题描述: 
* 程序输出: 
* 程序头部的注释结束
*/

【任务3】设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
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) 形式输出坐标点
};



#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);
	
	void input();  //以x,y 形式输入坐标点   
	
	void output(); //以(x,y) 形式输出坐标点  
	
	double Distance(CPoint p) const;   // 两点之间的距离(一点是当前点,另一点为参数p)  
	
	double Distance0() const;         // 到原点的距离   
	
	CPoint SymmetricAxis(SymmetricStyle style) const;   // 返回对称点 
	
};  
CPoint::CPoint(double xx,double yy)
{
	x = xx;
	
	y = yy;
}
void CPoint::input()  //以x,y 形式输入坐标点 
{
	cout << "请以x,y的形式输入坐标点"  << endl;
	
	while(1)
	{
		char c;
		
		cin >> x >> c >> y;
		
		if (c != ',')
		{
			cout << "格式非法!请从新输入!" ;
			
		}
		else
			break;
	}
}
	

void CPoint::output() //以(x,y) 形式输出坐标点 
{
	cout << '(' << x << ',' << y << ')' <<endl;
}

double CPoint::Distance(CPoint p) const  // 两点之间的距离(一点是当前点,另一点为参数p)
{
	double len;
	
	len = sqrt((p.x-this->x)*(p.x-this->x)+(p.y-this->y)*(p.y-this->y));  
	
	return len;
}


double CPoint::Distance0() const// 到原点的距离
{	
	double len;
	
	len = sqrt(x*x+y*y);  
	
	return len;
}


CPoint CPoint::SymmetricAxis(SymmetricStyle style) const  // 返回对称点 
{  
	CPoint p(x,y);
	
	switch(style)  
	{  
	case axisx: 
		
		p.y=-y; break; 
		
	case axisy:  
		
		p.x=-x; break;  
		
	case point:  
		
		p.x=-x;p.y=-y;  
	}  
	return p; 
}
void main()
{
	double dis;

	CPoint p1,p2,p;
	
	cout << "请输入p1的坐标:";

	p1.input();
	
	cout << "请输入p2的坐标:";
	
	p2.input();

   dis = p1.Distance(p2);
	
	cout << "p1和p2之间的距离为:" << dis << endl;

	dis = p1.Distance0();

	cout << "p1到原点之间的距离为:" << dis << endl;

	
	dis = p2.Distance0();
	cout << "p2到原点之间的距离为:" << dis << endl;

	p=p1.SymmetricAxis(axisx); 
	
	cout<<"p1关于x轴的对称点为:";
		
	p.output(); 
	
	p=p1.SymmetricAxis(axisy);  
	
	cout<<"p1关于y轴的对称点为:";
	
	p.output();

	p=p1.SymmetricAxis(point); 
	
    cout<<"p1关于原点的对称点为:";

	p.output();

	system ("pause");
}
	
	
	
	
	
	
	
	





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:211010次
    • 积分:3366
    • 等级:
    • 排名:第10003名
    • 原创:123篇
    • 转载:4篇
    • 译文:0篇
    • 评论:41条