6_3平面座標點類
阿新 • • 發佈:2019-02-03
// // main.cpp // 6_3.cpp // // Created by 紀 子龍 on 13-4-10. // Copyright (c) 2013年 紀 子龍. All rights reserved. // #include<iostream> #include<cmath> 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; } void CPoint::input() { std::cout<<"pelease input x,y"<<std::endl; std::cin>>x>>y; } void CPoint::output() { std::cout<<"("<<x<<","<<y<<")"<<std::endl; } 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; } CPoint CPoint::SymmetricAxis(char style)const { CPoint p; p.x=x; p.y=y;//該處也可用複製建構函式,要寫作p(*this) switch (style) { case 'x': p.y=-y; break; case 'y': p.x=-x; break; case 'o': p.x=-x; p.y=-y; break; default: break; } return p; } int main( ) { double distance; CPoint a,b,p; std::cout<<"請輸入點a座標"; a.input(); std::cout<<"請輸入點b座標"; b.input(); distance=a.Distance(b); std::cout<<"兩點的距離為:"<<distance<<std::endl; distance=a.Distance0(); std::cout<<"a到原點的距離為:"<<distance<<std::endl; p=a.SymmetricAxis('x'); std::cout<<"a關於x軸的對稱點為:"; p.output(); p=a.SymmetricAxis('y'); std::cout<<"a關於y軸的對稱點為:"; p.output(); p=a.SymmetricAxis('o'); std::cout<<"a關於原點的對稱點為:"; p.output(); return 0; } 執行結果: