第十三周项目一-点与圆的位置关系

来源:互联网 发布:福州算法工程师招聘 编辑:程序博客网 时间:2024/05/08 21:13
#include <iostream>#include <cmath>using namespace std;class point{protected:    double x,y;public:    point(double xx,double yy):x(xx),y(yy){}    double getx()    {        return x;    }     double gety()    {        return y;    }    ~point()    {    }    friend ostream& operator <<(istream &putout,point &c);};ostream& operator <<(ostream &putout,point &c){    putout<<"("<<c.getx()<<","<<c.gety()<<")"<<endl;    return putout;}class circle:public point{private:    double r;public:    circle(double xx,double yy,double rr):        point(xx,yy),r(rr){}    ~circle()    {    }    friend ostream& operator <<(ostream &putout,circle &c);    friend double locate(point &a,circle &b);};ostream& operator <<(ostream &putout,circle &c){    putout<<"("<<c.getx()<<","<<c.gety()<<")"<<endl;    putout<<"半径"<<c.r<<endl;     return putout;}double locate(point &a,circle &b){    double num,d;    d=sqrt(pow(a.getx()-b.getx(),2)+pow(a.gety()-b.gety(),2));   if(d>b.r)    num=1;   else if(d==b.r)    num=0;   else    num=-1;   return num;}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
原创粉丝点击