2
.#include
#include
using namespace std;
class Point{
public:
double x,y;
//在此定义构造函数
//在屏幕上打印Point对象的函数
//计算这个点到另外一个点的距离的函数
};
class Circle{
public:
Point location; //圆心的坐标
double r; //圆半径
public:
//构造函数
//两个圆的位置关系函数 stateOfCircle(Circle c)
//计算圆面积的函数 area( )
//计算两个圆的圆心距离 distance(Point p)
void print(){ }
};
int main(){
//定义两个矩形对象和Point对象 //测试每一个成员函数
return 0;
}
```设计提示
Circle类提示如下:
(1) Circle类中一定包含一个Point类成员对象,还需要一个半径值。
(2) Circle类中要有一个判断两个圆状态的函数 stateOfCircle(Circle c)。
(3) Circle类中要有一个计算圆面积的函数 area( )。
(4) Point类需要有一个计算距离的函数distance(Point p)。
测试代码提示如下:
(1) 定义两个个Circle对象
(2) 调用Circle的对象方法stateOfCircle判断这两个圆的位置关系
(3) 调用Circle的对象方法area计算圆面积
(4) 调用Point的对象方法distance计算两个圆之间圆心距离
// Q764558.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <math.h>
using namespace std;
enum State
{
相离, 相切, 相交, 同心圆, 嵌套
};
class Point {
public:
double x, y;
//在此定义构造函数
Point(double a, double b)
{
x = a;
y = b;
}
//在屏幕上打印Point对象的函数
void PrintPoint()
{
cout << "Point X=" << x << ",Y=" << y << endl;
}
//计算这个点到另外一个点的距离的函数
double Distance(Point p)
{
return sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
}
};
class Circle {
public:
Point location; //圆心的坐标
double r; //圆半径
public:
//构造函数
Circle(double x, double y, double r):location(x, y), r(r)
{
}
//两个圆的位置关系函数 stateOfCircle(Circle c)
State stateOfCircle(Circle c)
{
if (distance(c.location) > c.r + r)
return 相离;
if (distance(c.location) == c.r + r)
return 相切;
if (distance(c.location) == (c.r > r ? c.r - r : r - c.r))
return 相切;
if (location.x == c.location.x && location.y == c.location.y)
return 同心圆;
if (distance(c.location) <= c.r + r)
return 相交;
}
//计算圆面积的函数 area( )
double area()
{
return r * r* 3.1416;
}
//计算两个圆的圆心距离 distance(Point p)
double distance(Point p)
{
return location.Distance(p);
}
void print()
{
cout << "Circle:X=" << location.x << ",Y=" << location.y << ",R=" << r << endl;
}
};
int main() {
//定义两个矩形对象和Point对象 //测试每一个成员函数
//(1) 定义两个个Circle对象
Circle c1(10, 10, 3);
Circle c2(12, 12, 4);
//(2) 调用Circle的对象方法stateOfCircle判断这两个圆的位置关系
cout << c1.stateOfCircle(c2) << endl;
//(3) 调用Circle的对象方法area计算圆面积
cout << c1.area() << endl;
cout << c2.area() << endl;
//(4) 调用Point的对象方法distance计算两个圆之间圆心距离
cout << c1.location.Distance(c2.location) << endl;
return 0;
}