c++上机实验报告,编程判断点是否在圆内

1.代码实现。
#include
using namespace std;

class CCircle; //①
class CPoint
{

public:
unsigned x;
unsigned y;
bool IsInCircle(CCircle *Circle); //判断点是否在圆内-②
};

class CCircle
{
public:
unsigned Radius;
CPoint Center;
};
bool CPoint::IsInCircle(CCircle Circle)
{
return (((x-Circle->Center.x)
(x-Circle->Center.x)
+(y-Circle->Center.y)(y-Circle->Center.y))<=Circle->RadiusCircle->Radius);
}
int main()
{
//补充代码

}
问题1:补充main()代码,实现测试(1)点1(3,4),圆半径=5,圆心(0,0)是否在圆内;测试(2) 点2(5,4),圆半径=3,圆心(2,1)是否在圆内。
问题2:①代码去掉,代码能否正确执行,不能给出原因。
问题3:② IsInCircle(CCircle *Circle)实现类内定义及实现,代码能否正确执行,如果不能,请给出原因。

代码补充如下:

#include <iostream>
using namespace std;

class CCircle; //①
class CPoint
{
public:
    unsigned x;
    unsigned y;
    bool IsInCircle(CCircle* Circle); //判断点是否在圆内-②
};

class CCircle
{
public:
    unsigned Radius;
    CPoint Center;
};
bool CPoint::IsInCircle(CCircle* Circle)
{
    return (((x - Circle->Center.x)*(x - Circle->Center.x)
        + (y - Circle->Center.y)*(y - Circle->Center.y)) <= Circle->Radius*Circle->Radius);
}
int main()
{
    //补充代码
    CCircle c1;
    c1.Radius = 5;
    c1.Center.x = 0;
    c1.Center.y = 0;
    CPoint p1;
    p1.x = 3;
    p1.y = 4;
    if (p1.IsInCircle(&c1))
        cout << "在圆内" << endl;
    else
        cout << "不在圆内" << endl;

    CCircle c2;
    c2.Center.x = 2;
    c2.Center.y = 1;
    c2.Radius = 3;
    CPoint p2;
    p2.x = 5;
    p2.y = 4;

    if (p2.IsInCircle(&c2))
        cout << "在圆内" << endl;
    else
        cout << "不在圆内" << endl;

    return 0;
}

问题2:①代码去掉,代码能否正确执行,不能给出原因。
答:去掉后不能执行,编译报错,因为CCircle类的声明在CPoint类的后面,去掉①代码后,CPoint类中使用CCircle类时无法识别该类型。
问题3:② IsInCircle(CCircle *Circle)实现类内定义及实现,代码能否正确执行,如果不能,请给出原因。
答:不能。在类内实现时,CCircle类还没有具体实现,在IsInCircle函数中无法识别CCircle类的成员变量。

圆心肯定在园内啊,是某个点是否在园内吧

#include <iostream>
using namespace std;

class CCircle; 
class CPoint
{
public:
unsigned x;
unsigned y;
bool IsInCircle(CCircle *Circle); 
};

class CCircle
{
public:
unsigned Radius;
CPoint Center;
};
bool CPoint::IsInCircle(CCircle *Circle)
{
    return (((x-Circle->Center.x)*(x-Circle->Center.x)+(y-Circle->Center.y)*(y-Circle->Center.y))<=Circle->Radius*Circle->Radius);
}

int main()
{
    CPoint pt1;
    pt1.x = 3;
    pt1.y = 4;
    CCircle c1;
    c1.Radius = 5;
    c1.Center.x = 0;
    c1.Center.y = 0;
    if(pt1.IsInCircle(&c1))
        cout<<"点(3,4)在圆内"<<endl;
    else
        cout<<"点(3,4)不在圆内"<<endl;
    //
    CPoint pt2;
    pt2.x = 5;
    pt2.y = 4;
    CCircle c2;
    c2.Radius = 3;
    c2.Center.x = 2;
    c2.Center.y = 1;
    if(pt2.IsInCircle(&c2))
        cout<<"点(5,4)在圆内"<<endl;
    else
        cout<<"点(5,4)不在圆内"<<endl;
    return 0;
}



#ifndef __CRICLE_H__
#define __CRICLE_H__
#include "point.h"
class Circle
{
public:
    //创建圆
    void init(int r, int x, int y);
    //判断点是否在 当前圆 内
    bool inCircle(Point &p);
private:
    Point _c;
    int _r;
};
 
#endif// __CRICLE_H__
#ifndef __POINT_H__
#define __POINT_H__
 
class Point
{
public:
    //创建点
    void init(int x, int y);
    //测一个点和当前点的距离的平方
    int distance(Point &p);
private:
    int _x;
    int _y;
};
 
#endif//__POINT_H__

#include "circle.h"
 
void Circle::init(int r, int x, int y)
{
    _r = r;
    _c.init(x, y);
}
 
bool Circle::inCircle(Point &p)
{
    //计算点p和 当前圆圆心c 的距离
    int dis = p.distance(_c);
 
    //和半径比较
    if (dis <= _r*_r)
        return true;
    else
        return false;
}

#include "point.h"
 
void Point::init(int x, int y)
{
    _x = x;
    _y = y;
}
 
int Point::distance(Point &p)
{
    int dis = (_x-p._x)*(_x-p._x)
        + (_y-p._y)*(_y-p._y);
 
    return dis;
}

主函数

#include <iostream>
#include "circle.h"
#include "point.h"
using namespace std;
 
int main()
{
    //一个点
    Point p;
    p.init(1,2);
 
    Circle c;
    c.init(3, 0, 0);
 
    if (c.inCircle(p))
        cout << "在圆内" << endl;
    else
        cout << "在圆外" << endl;
 
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632