第13周项目2

来源:互联网 发布:apache和nginx共存 编辑:程序博客网 时间:2024/05/05 16:14
/**程序的版权和版本声明部分:*Copyright(c)2014,烟台大学计算机学院学生*All rights reserved.*文件名称:*作者:张凯*完成日期:2014 年 5 月 20 日*版本号:v1.0*对任务及求解方法的描述部分:*输入描述: -*问题描述:*程序输出:圆的比较*问题分析:*算法设计:*/#include <iostream>#include <cmath>using namespace std;class Point{    protected:      double x;      double y;    public:    Point(int xx,int yy):x(xx),y(yy){}    ~Point(){}     double get_x()    {        return x;    }    double get_y()    {        return y;    } friend ostream & operator << (ostream &out,Point &p);  void output()      {          cout<<"("<<x<<","<<y<<")"<<endl;      }};class Circle:public Point{   protected:     double r;    public:      Circle(int xx,int yy,double rr):Point(xx,yy),r(rr){}      ~Circle(){}      double get_r()      {          return r;      }      friend double locate(Point,Circle );      friend ostream & operator << (ostream &out,Circle &c);      double area();      bool operator >(Circle &);      bool operator <(Circle &);      bool operator >=(Circle &);      bool operator <=(Circle &);      bool operator ==(Circle &);      bool operator !=(Circle &);};ostream & operator << (ostream &out,Point &p){    out<<"("<<p.get_x()<<","<<p.get_y()<<")"<<endl;    return out;}ostream & operator << (ostream &out,Circle &c){    out<<"("<<c.get_x()<<","<<c.get_y()<<")"<<" "<<"r="<<c.get_r()<<endl;    return out;}double locate(Point p,Circle c ){    double R,result;    R=sqrt(pow(p.get_x()-c.get_x(),2)+pow(p.get_y()-c.get_y(),2));    if(R<c.get_r())        result=-1;    else if(R==c.get_r())        result=0;    else        result=1;    return result;} double Circle::area() {     return 3.14*pow(get_r(),2); } bool Circle::operator>(Circle &c){    if(area()>c.area())    {        return true;    }    else    {        return false;    }}bool Circle::operator<(Circle &c){    if(area()<c.area())    {        return true;    }    else    {        return false;    }}bool Circle::operator>=(Circle &c){    if(!(area()<c.area()))    {        return true;    }    else    {        return false;    }}bool Circle::operator<=(Circle &c){    if(!(area()>c.area()))    {        return true;    }    else    {        return false;    }}bool Circle::operator==(Circle &c){    if(area()==c.area())    {        return true;    }    else    {        return false;    }}bool Circle::operator!=(Circle &c){    if(area()!=c.area())    {        return true;    }    else    {        return false;    }}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;    cout<<"圆c1的面积:"<<c1.area()<<endl;    cout<<"圆c2的面积:"<<c2.area()<<endl;     if(c1>c2)    {        cout<<"c1>c2"<<endl;    }    if(c1<c2)    {        cout<<"c1<c2"<<endl;    }    if(c1>=c2)    {        cout<<"c1>=c2"<<endl;    }    if(c1<=c2)    {        cout<<"c1<=c2"<<endl;    }    if(c1==c2)    {        cout<<"c1==c2"<<endl;    }    if(c1!=c2)    {        cout<<"c1!=c2"<<endl;    }    return 0;}


0 0
原创粉丝点击