第12周项目4点与园

来源:互联网 发布:js给二维数组赋值 编辑:程序博客网 时间:2024/05/31 06:24
#include<iostream>#include<cmath>using namespace std;class Point{public:    Point(double xx=0,double yy=0);    double distance(Point p);    friend ostream &operator<<(ostream &output,Point &p);protected:    double x,y;};Point::Point(double xx,double yy){    x=xx;    y=yy;}double Point::distance(Point p){    double x1=x-p.x;    double y1=y-p.y;    return sqrt(x1*x1+y1*y1);}ostream &operator<<(ostream &output,Point &p){    output<<"["<<p.x<<","<<p.y<<"]"<<endl;    return output;}class Circle:public Point{public:    Circle(double xx=0,double yy=0,double r=0);    friend int locate(Point &p1,Circle &c1);    friend ostream &operator<<(ostream &output,Circle &c1);private:    double radius;};Circle::Circle(double xx,double yy,double r)    :Point(xx,yy),radius(r) {}ostream & operator<<(ostream &output,Circle &c1){    output<<"Center=["<<c1.x<<", "<<c1.y<<"], r="<<c1.radius<<endl;    return output;}int locate(Point &p1,Circle &c1){    double d=c1.distance(p1);    if (abs(d - c1.radius) < 1e-7)        return 0;  //相等    else if(d<c1.radius)        return -1;    else        return 1;}int main( ){    Circle c1(3,2,4),c2(4,5,5);      //c2应该大于c1    Point p1(1,1),p2(3,-2),p3(7,3);  //分别位于c1内、上、外    cout<<"圆c1: "<<c1;    cout<<"点p1: "<<p1;    cout<<"点p1在圆c1之"<<((locate(p1, c1)>0)?"外":((locate(p1, c1)<0)?"内":"上"))<<endl;    cout<<"点p2: "<<p2;    cout<<"点p2在圆c1之"<<((locate(p2, c1)>0)?"外":((locate(p2, c1)<0)?"内":"上"))<<endl;    cout<<"点p3: "<<p3;    cout<<"点p3在圆c1之"<<((locate(p3, c1)>0)?"外":((locate(p3, c1)<0)?"内":"上"))<<endl;    return 0;}


 

0 0