都是

来源:互联网 发布:淘宝二手苹果回收 编辑:程序博客网 时间:2024/04/24 04:39

#include <iostream>
using namespace std;
class Circle;
class Point
{
protected:
    double x,y;
public:
    Point(int xx=0,int yy=0):x(xx),y(yy) {}
    friend ostream& operator<<(ostream&output,const Point &c);
    friend double locate(Point &p,Circle &c); //点与圆的位置关系
};
ostream& operator<<(ostream&output,const Point &c)
{
    output<<"("<<c.x<<","<<c.y<<")"<<endl;
    return output;
}

class Circle:public Point
{
protected:
    double r;
public:
    Circle(int xx=0,int yy=0,double rr=0):Point(xx,yy),r(rr){};
    friend ostream& operator<<(ostream&output,const Circle &c);
    friend double locate(Point &p,Circle &c); //点与圆的位置关系
};
ostream& operator<<(ostream&output,const Circle &c)
{
    output<<"("<<c.x<<","<<c.y<<","<<c.r<<")"<<endl;
    return output;
}
double locate(Point &p,Circle &c)
{
    if(((p.x-c.x)*(p.x-c.x)+(p.y-c.y)*(p.y-c.y))<(c.r*c.r))
        return -1;
    else if(((p.x-c.x)*(p.x-c.x)+(p.y-c.y)*(p.y-c.y))>(c.r*c.r))
        return 1;
    else
        return 0;
}

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
原创粉丝点击