平面坐标点类
来源:互联网 发布:不用网络的好游戏 编辑:程序博客网 时间:2024/05/09 22:52
/** 程序的版权和版本声明部分* Copyright (c)2012, 烟台大学计算机学院学生* All rightsreserved.* 文件名称: object.cpp* 作者:刘清远* 完成日期: 2013 年4月9日* 版本号: 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 Distance(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;}// 求两点之间的距离double CPoint::Distance(CPoint p) const{ 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;}// 求对称点, style取'x','y'和'o'分别表示按x轴, y轴, 原点对称CPoint CPoint::SymmetricAxis(char style) const{ CPoint p(this->x,this->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::input(){ char c; cout<<"请输入坐标点(格式x,y ):"; while(1) { cin>>x>>c>>y; if (c==',') break;elsecout<<"输入的数据格式不符合规范,请重新输入:"; }}// 输出坐标点void CPoint::output(){ cout<<"("<<x<<", "<<y<<")"<<endl;}int main( ){ double distance; CPoint p1,p2,p; cout<<"第1个点p1,"; p1.input(); cout<<"第2个点p2,"; p2.input(); distance=p1.Distance(p2); cout<<"两点的距离为:"<<distance<<endl; distance=p1.Distance0(); cout<<"p1到原点的距离为:"<<distance<<endl; p=p1.SymmetricAxis('x'); cout<<"p1关于x轴的对称点为:"; p.output(); p=p1.SymmetricAxis('y'); cout<<"p1关于y轴的对称点为:"; p.output(); p=p1.SymmetricAxis('o'); cout<<"p1关于原点的对称点为:"; p.output(); return 0;}