13【项目2 - 圆的比较】

来源:互联网 发布:mysql 查看当前连接数 编辑:程序博客网 时间:2024/06/06 00:30
/**Corpyright (c)2013,烟台大学计算机学院*All right reseved.*作者:张梦佳*完成日期:2014年5月20日*版本号:v1.0*输入描述:*问题描述:*程序输出:*问题分析:*算法设计:*/#include <iostream>#include <cmath>using namespace std;class Point{public:    Point(double a=0,double b=0):x(a),y(b){}    double getx()    {        return x;    }    double gety()    {        return y;    }    friend ostream& operator<<(ostream&output,Point&s);protected:    double x;    double y;};ostream& operator<<(ostream&output,Point&s){    output<<"("<<s.getx()<<","<<s.gety()<<")"<<endl;    return output;}class Circle:public Point{public:    Circle(double a=0,double b=0,double c=0):Point(a,b),r(c){}    double area()    {        return (3.14*r*r);    }    friend double locate(Point&s,Point&s1);    friend ostream& operator<<(ostream&output,Circle&s);    double getr()    {        return r;    }    bool operator>(Circle&s);    bool operator<=(Circle&s);    bool operator<(Circle&s);    bool operator>=(Circle&s);    bool operator==(Circle&s);    bool operator!=(Circle&s);private:    double r;};bool Circle::operator>(Circle&s){    if(area()>s.area())    return true;    else    return    false;}bool Circle::operator<=(Circle&s){    if(!(area()>s.area()))    return true;    else    return    false;}bool Circle::operator<(Circle&s){    if(area()<s.area())    return true;    else    return    false;}bool Circle::operator==(Circle&s){    if(area()==s.area())    return true;    else    return    false;}bool Circle::operator!=(Circle&s){    if(area()!=s.area())    return true;    else    return    false;}bool Circle::operator>=(Circle&s){    if(!(area()>s.area()))    return true;    else    return false;}ostream& operator<<(ostream&output,Circle&s){    output<<"("<<s.getx()<<","<<s.gety()<<","<<s.r<<")";    return output;}double locate(Point&s,Circle&s1){    double num,num1;    num=sqrt((s1.getx()-s.getx())*(s1.getx()-s.getx())+(s1.gety()-s.gety())*(s1.gety()-s.gety()));    num1=num-s1.getr();    return num1;}int main( ){Circle c1(3,2,4),c2(4,5,5),c3(3,2,4);      //c2应该大于c1Point 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;if(c1>c2)cout<<"c1"<<c1<<">"<<"c2"<<c2;elsecout<<"c1"<<c1<<"<"<<"c2"<<c2;cout<<endl;if(c1==c3)cout<<"c1"<<c1<<"="<<"c3"<<c3;elsecout<<"c1"<<c1<<"!="<<"c3"<<c3;cout<<endl;return 0;}


感悟:

运算符的重载又忘了!啥也不说,往前翻吧!

0 0
原创粉丝点击