Circle类

//定义点类、圆类
// 点类:数据成员包括横、纵坐标
// 圆类:
// 数据成员包括圆心(点类对象)、半径
// 成员函数void disRel(Circle & c)返回当前圆对象与另一个圆对象的距离关系:
// 相离、外切、相交、内切、同心


#include <iostream>
#include <cmath>
using namespace std;
class Point{
public:
int x,y;
void set(int,int);
};
void Point::set(int a,int b){
this->x=a;
this->y=b;
}
class Circle{
private:
Point x;
int r;
public:
void set(Point m,int n);
void disRel(Circle & c);


};
void Circle::set(Point m,int n){
this->x=m;
this->r=n;
}
void Circle::disRel(Circle & c){
Point a=this->x,b=c.x;
int q=(a.x-b.x)*(a.x-b.x);
int w=(a.y-b.y)*(a.y-b.y);
double l=q+w;
double h= sqrt(l);
double j=this->r+c.r;
if(h==j)
cout<<"相切"<<endl;
else
if(h>j)
cout<<"相离"<<endl;
else
if(h<j)
cout<<"相交"<<endl;
}
int main(){
Point a,b;
a.set(0,0);
b.set(3,4);
Circle x,y;
x.set(a,1);
y.set(b,1);
x.disRel(y);
return 0;
}
实验内容: 一、定义一个名为Circle,位于shape包中。要求如下: (1) 该需要描述在二维坐标系中的位置,心的横、纵坐标值均取整数;描述的半径,取双精度型。 (2) 无参构造方法将心坐标设为坐标点,半径设为1.0;有参构造方法需要根据参数值设置心坐标和半径值。 (3) 提供一个计算面积的方法double getArea()。 (4) 提供一个判断当前对象与参数对象是否相交的方法(相交方式见下图): boolean isIntersected(Circle another) (5) 提供一个判断当前对象是否包含参数对象的方法(包含方式见下图): boolean contains(Circle another) (6) 提供一个判断当前对象与参数对象的大小关系的方法(判断依据是半径,半径之差的绝对值小于0.0001认为相等;返回负数表示当前对象小,0表示相等,正数表示当前对象) int compareTo(Circle another) (7) 提供返回当前的字符串的方法,格式为:[Circle(x,y)-raduis] String toString() 二、定义一个包含main方法的TestCircle,位于shape包中。要求如下: (1) main方法中调用以下方法。 (2) 编写静态方法createArray,生成位置和大小均随机的10个对象,置于数组中。 (3) 编写静态方法sort对这10个对象进行升序排序,并输出。 (4) 编写静态方法computeArea计算这10个中互不相交和包含的的面积之和。 提交要求:打包为可以执行的JAR文档,其中要包含源程序文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值