码迷,mamicode.com
首页 > 其他好文 > 详细

第12周 项目四-点、圆关系(5)

时间:2015-05-27 10:08:34      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:c++   大一练习   继承和派生   

(5)在圆类上重载关系运算符(6种),使之能够按圆的面积比较两个圆的大小。自编main函数完成测试。
代码:

#include <iostream>
using namespace std;
class Circle;
class Point
{
protected:
    int x;
    int y;
public:
    Point(int a,int b):x(a),y(b) {}
    friend ostream &operator <<(ostream &out,Point &a);
        friend int locate(Point &a,Circle &b);
};
ostream &operator <<(ostream &out,Point &a)
{
    cout<<"x="<<a.x<<" y="<<a.y<<endl;
    return out;
}
class Circle:public Point
{
protected:
    int r;
public:
    Circle(int a,int b,int c):Point(a,b),r(c) {}
    friend ostream &operator <<(ostream  &out,Circle &a);
    friend int locate(Point &a,Circle &b);
    bool operator>(Circle a){return this->r>a.r;}
    bool operator>=(Circle a){return !(this->r<a.r);}
    bool operator<(Circle a){return this->r<a.r;}
    bool operator<=(Circle a){return !(this->r>a.r);}
    bool operator==(Circle a){return this->r==a.r;}
    bool operator!=(Circle a){return !(this->r==a.r);}
};
ostream &operator <<(ostream  &out,Circle &a)
{
    cout<<"圆心:"<<" ("<<a.x<<"<"<<a.y<<") "<<"半径:"<<a.r<<endl;
    return out;
}
//int locate(Point &a,Circle &b)
//{
//    return (b.r*b.r-(a.x-b.x)*(a.x-b.x)-(a.y-b.y)*(a.y-b.y));
//}
int main( )
{
    Circle c1(3,2,4),c2(4,5,5);      //c2应该大于c1
    cout<<"圆c1: "<<c1;
    cout<<"圆c2: "<<c1;
    cout<<"比较两个圆的面积大小。"<<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;
}


运行结果:

技术分享

第12周 项目四-点、圆关系(5)

标签:c++   大一练习   继承和派生   

原文地址:http://blog.csdn.net/ljd939952281/article/details/46041951

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!