设计平面坐标点类

* (程序头部注释开始)
*
程序的版权和版本声明部分
* Copyright (c) 2011,
烟台大学计算机学院学生
* All rights reserved.
*
文件名称:
*
者:吴瑕
*
完成日期: 2012 03 28
*
号:

*对任务及求解方法的描述部分
*
输入描述:
*
问题描述:

设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等

#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;}

double CPoint::Distance(CPoint p) const  // 两点之间的距离(一点是当前点,另一点为参数p)//用对象作参数
{
	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(x,y);//在此定义
		switch(style)
		{
		case  axisx:
			p.y=-y;
			break;
		case axisy:
	    	p.x=-x;
	        break;
		case point:
			p.x=-x;
			p.y=-y; 
            break;

		}
		return p;//返回一个对象

	}

	void CPoint::input()  //以x,y 形式输入坐标点
	{
		char ch;
		cout<<"请输入坐标点(格式x,y ):";
		while(1)
		{
			cin>>x>>ch>>y;
			if(ch != ',')
			{cout<<"输入格式不对";}
			else
				break;
		}
	}

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

	void main()
	{
       double distance; 
       CPoint p2;

       CPoint p;
	   cout<<"请输入一个点:";
	   p.input();

	   CPoint p1;
       cout<<"请输入另一个点:";//为什么在这要写成 CPoint p1(5,4)得出来的距离为随机数呢?
	   p1.input();
	   distance=p.Distance( p1);
	   cout<<"当前点到p1点的距离为:"<<distance<<endl;

	   
	  distance=p. Distance0();
      cout<<"到原点的距离为:"<<distance<<endl;;

	   
	  p2=p.SymmetricAxis( axisx);
	 cout<<"此点关于x轴对称的点为:";
		 p2.output();
		 cout<<endl;

      
	  p2=p.SymmetricAxis( axisy);
      cout<<"此点关于y轴对称的点为:";
        p2.output();
	    cout<<endl;


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

	}


 

运行结果:

设计平面坐标点类_第1张图片
上机感言:

由此学会了用对象作参数,复习了枚举类型那块的知识!

此题可不可以在定义对象时为其赋初值呢?但我写成CPoint p1(5,4)后得出来的数为随机数,该怎样写呢?

 

你可能感兴趣的:(c,Class,input,任务,output,distance)