/* * 程序的版权和版本声明部分 * Copyright (c)2014, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称:a.cpp * 作 者:孔云 * 完成日期:2014年4月1日 * 版 本 号: v1.0 * 输入描述:坐标点。 * 问题描述:设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等,在设计中,由于求距离、求对称点等操作,对原对象不能造成任何改变。 * 输出描述:两点之间距离、到原点距离、关于坐标轴和原点的对称点。 */ #include <iostream> #include <cmath> #include <cstdlib> 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; } double CPoint::Distance1(CPoint p) const { double dx,dy; dx=p.x-x; dy=p.y-y; return(sqrt(dx*dx+dy*dy)); } 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 t(this->x,this->y); if(style=='x') { t.y=-y; } else if(style=='y') { t.x=-x; } else { t.x=-x; t.y=-y; } return t; } void CPoint::input() { char c1,c2,c3; cout<<"请输入坐标(x,y):"<<endl; cin>>c1>>x>>c2>>y>>c3; if(c1!='('||c2!=','||c3!=')') { cout<<"请重新输入:"<<endl; cin>>c1>>x>>c2>>y>>c3; if(c1!='('||c2!=','||c3!=')') { exit(0); } } } void CPoint::output() { cout<<"("<<x<<","<<y<<")"<<endl; } int main() { char x; CPoint t1,t2,t3; t1.input(); t2.input(); cout<<"两点之间的距离:"<<t1.Distance1(t2)<<endl; cout<<"t2点到原点的距离:"<<t2.Distance0()<<endl; cout<<"请输入任意一个字符(x,y,o)分别代表关于x轴、y轴、原点对称"<<endl; cin>>x; t3=t1.SymmetricAxis(x); t3.output(); return 0; }
心得体会:此程序让人有点脑胀,不过还好,做过之后头脑依然清醒,希望每做完一道程序有着不同的体验和感觉!