07-拷贝构造函数与复合类-
题目描述
类Point是我们写过的一个类,类Circle是一个新的类,Point作为其成员对象,请完成类Circle的成员函数的实现。
在主函数中生成一个圆和若干个点,判断这些点与圆的位置关系,如果点在圆内(包括在圆的边上),输出“inside”,否则输出"outside";然后移动圆心的位置,再次判断这些点与圆的位置关系。
输入
圆的x坐标 y坐标 半径
点的个数n
第一个点的x坐标 y坐标
第二个点的x坐标 y坐标
…
第n个点的x坐标 y坐标
圆心移动到的新的x坐标 y坐标
输出
第一个点与圆的关系
第二个点与圆的关系
…
第n个点与圆的关系
after move the centre of circle
圆心移动后第一个点与圆的关系
圆心移动后第二个点与圆的关系
…
圆心移动后第n个点与圆的关系
输入样例
0 0 5
4
1 1
2 2
5 0
-6 0
-1 0
inside
inside
inside
outside
after move the centre of circle:
inside
inside
outside
inside
#include#include #include using namespace std; class point { double x,y; public: point()//构造函数 {x=0;y=0;} point(double xval,double yval) {x=xval;y=yval;} double getx() {return x;} double gety() {return y;} void setxy(double xval,double yval) {x=xval;y=yval;} void setx(double xval) {x=xval;} void sety(double yval) {y=yval;} double getdis(point &p) {return sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));} }; class circle { point centre; double ra; public: circle():centre(0,0),ra(1){} circle(double x,double y,double r):centre(x,y),ra(r){} double getarea() {return 3.14*ra*ra;} void movecentre(double x1,double y1) { centre.setxy(x1,y1); } int contain(point &p) { if(centre.getdis(p)<=ra) return 1; else return 0; } }; int main() { int x,y,r,n; cin>>x>>y>>r>>n; int *s=new int(100); int *ss=new int(100); int i,sum=0; circle a(x,y,r); for(i=1;i<=n;i++) { int x1,y1; cin>>x1>>y1; s[sum]=x1;ss[sum]=y1;sum++;//存储数据 point b(x1,y1); if(a.contain(b)!=0) cout<<"inside"< >x2>>y2; a.movecentre(x2,y2); cout<<"after move the centre of circle:"<



