练习专区

今天的一小步就是明天的一大步
Problem 1652 圆的平移
Accepted: 4   Total Submit: 7
Time Limit: 1000ms   Memory Limit: 30720KB
Description
在二维平面上画圆需要给定圆的圆心坐标和半径。 现在定义一个圆Circle类,它包含一个圆心O和半径radius,其中的圆心O是个点Point对象。 Point对象包含x和y坐标,Point对象的初始化由其构造函数来实现。 圆可以在平面上沿X轴方向或Y轴方向移动一定的距离到达新的位置,移动由函数moveX()和moveY()完成。 现在请你根据下面的类图和给出的main函数代码编写这两个类Circle和Point。需要使用友元。 main函数: void main() { char ch; int n; int x,y; double r; int d; Circle *pc; while(cin>>n) { if(n == 0) { pc = new Circle; } else if(n == 1) { cin>>r; pc = new Circle(r); } else if(n == 3) { cin>>x>>y>>r; pc = new Circle(x,y,r); } cout<<"平移前:"; pc->showMessage(); cin>>ch>>d; if(ch == 'X') { pc->moveX(d); } else if(ch == 'Y') { pc->moveY(d); } cout<<"平移后:"; pc->showMessage(); } }
Input
输入有多组,每组一行。每行数据的第1个值是个整数n表示后面有n个数据作为圆的参数。当n=0时表示不给圆任何参数;当n=1时在n后有1个值表示圆的半径r;当n=3时在n后有3个数值,前2个表示圆心的x,y坐标值,第3个表示圆的半径r。后面的X或Y及数字d表示圆沿着X轴或Y轴平移d个单位。
Output
输出该点的圆心坐标和半径。输出格式见样例。
Sample Input
0 X 1
1 2.0 X 2
3 1 1 1.0 Y 1
Sample Output
平移前:圆心为(0,0)半径为1.00的圆
平移后:圆心为(1,0)半径为1.00的圆
平移前:圆心为(0,0)半径为2.00的圆
平移后:圆心为(2,0)半径为2.00的圆
平移前:圆心为(1,1)半径为1.00的圆
平移后:圆心为(1,2)半径为1.00的圆
Hint
提交     返回