第十三周 项目四--点、圆的关系(5)

问题及代码:

/*
*Copyright (c) 2015,烟台大学计算机学院
*All rights reserved.
*文件名称:test.cpp
*作者:吴胜男
*完成日期:2015年05月28日
*版本号:v1.0
*
*问题描述:(5)在圆类上重载关系运算符(6种),使之能够按圆的面积比较两个圆的大小。自编main函数完成测试。
*输入描述:
*程序输出:
*/
#include <iostream>
#include <cmath>
using namespace std;
class Point
{
protected:
    int x;
    int y;
public:
    Point(int a=0,int b=0):x(a),y(b){};
    ~Point(){};
    double distance(const Point &p)const;
};
double Point::distance(const Point &p)const
{
    double d;
    d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
    return d;
}
class Circle:public Point
{
private:
    double r;//半径
public:
    Circle(int a=0,int b=0,int l=0):Point(a,b),r(l){};
    ~Circle(){};
    friend ostream &operator <<(ostream &output, const Circle &c);
    bool operator >  (Circle &c);
    bool operator <  (Circle &c);
    bool operator >= (Circle &c);
    bool operator <= (Circle &c);
    bool operator == (Circle &c);
    bool operator != (Circle &c);
    friend void compare(Circle &c1,Circle &c2);
};
bool Circle::operator >  (Circle &c)
{
    if(r > c.r)
        return true;
    else
        return false;
}
bool Circle::operator <  (Circle &c)
{
    if(r < c.r)
        return true;
    else
        return false;
}
bool Circle::operator >= (Circle &c)
{
    if(!(r < c.r))
        return true;
    else
        return false;
}
bool Circle::operator <= (Circle &c)
{
    if(!(r > c.r))
        return true;
    else
        return false;
}
bool Circle::operator == (Circle &c)
{
    if(r == c.r)
        return true;
    else
        return false;
}
bool Circle::operator != (Circle &c)
{
    if(!(r == c.r))
        return true;
    else
        return false;
}
ostream &operator <<(ostream &output, const Circle &c)
{
    output<<"\t圆心:"<<"("<<c.x<<","<<c.y<<")"<<"\t半径="<<c.r<<endl;
    return output;
}
void compare(Circle &c1,Circle &c2)
{
    if(c1<c2)   cout<<" 小于";
    if(c1>=c2)  cout<<" 大于等于";
    if(c1>c2)   cout<<" 大于";
    if(c1<=c2)  cout<<" 小于等于";
    if(c1==c2)  cout<<" 等于";
    if(c1!=c2)  cout<<" 不等于";
}
int main( )
{
    Circle c1(3,2,4),c2(3,2,5);
    Circle c3(1,2,6),c4(4,5,6);
    cout<<"圆c1: "<<c1;
    cout<<"圆c2: "<<c2;
    cout<<"圆c3: "<<c3;
    cout<<"圆c4: "<<c4;
    cout<<"c1";
    compare(c1,c2);
    cout<<"c2"<<endl;
    cout<<"c3";
    compare(c3,c4);
    cout<<"c4"<<endl;
    cout<<"c1";
    compare(c1,c3);
    cout<<"c3"<<endl;
    cout<<"c2";
    compare(c2,c4);
    cout<<"c4"<<endl;
    return 0;
}

 

运行结果:

知识点总结:运算符重载。

学习心得:做事开开心心的,用功吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值