湖南某高校一根小稻草 2019-06-04 15:11 采纳率: 100%
浏览 770
已采纳

掌握组合类的定义和使用

  1. 要求 (1) 定义一个圆类Circle类,圆心对应一个点类Point类: 在main函数中生成两个Circle对象,计算每个Circle对象的面积,并计算两个Circle对象圆心的距离,最后判断两个圆的状态:相离,相切,相交,同心圆。

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计算两个圆之间圆心距离
  • 写回答

1条回答 默认 最新

  • threenewbee 2019-06-04 18:29
    关注
    // 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;
    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站