问题及代码:
/*
* Copyright (c) 2015, 烟台大学计算机学院
* All rights reserved.
* 文件名称:Project4.cpp
* 作 者:李楠
* 完成日期:2015年5月25日
* 版 本 号: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;
}
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;
}
运行结果:
知识点总结:
总觉得自己设计的主函数比较麻烦……哈哈,我还在纠结等于的两个数符不符合大于等于和小于等于这两个条件,后来想着想着被自己可爱到了
学习心得:
告诉自己学习是快乐的,敲代码是快乐的~其实我还是很开心的~