【发布时间】:2022-01-12 02:53:21
【问题描述】:
我得到了一个构造函数:
Circle::Circle(const Point& c, float r) {
x_ = c.getX();
y_ = c.getY();
r_ = r;
}
所有值都已初始化,如图所示。在参数中我有Point& - 这只是允许我使用来自不同类的函数来获取 x 和 y 坐标。另外,我有“r”,它将采用半径值。
使用这个我想检查是否:如果 o 是一个圆,它返回 true 当且仅当 p 在圆的内部或边界上
例如,
给我:Point p(1,2); & Circle c(p,3);
我想检查Point(3.9,2)是在Circle c(p,3);的内部还是边界上
如需额外参考,我将提供Point Constructor:
Point::Point(float x, float y) {
x_ = x;
y_ = y;
}
初始化构造函数以允许我创建用于其他类的 getter 和 setter。
在我的函数中我尝试过这个:
bool Circle::contains(const Point& p) const {
bool results;
if( ( (getX()-p.getX() ) * ( getX()-p.getX() ) ) + ( ( (getY()-p.getY() ) * ( getY()-p.getY() ) ) <= (getR()*getR())))
{
results = true;
}
else {results = false;}
return results;
}
这不起作用。
给我的测试用例:
Point p(1,2);
Circle c(p,3);
if (!c.contains(p)) errorOut_("c does not contain p?",1);
if (!c.contains(Point(3.9,2))) errorOut_("c does not contain (3.9,2)?",1);
if (!c.contains(Point(3.1,4.1))) errorOut_("c does not contain (3.1,4.1)?",1);
if (!c.contains(Point(-1.1,4.1))) errorOut_("c does not contain (-1.1,4.1)?",1);
if (!c.contains(Point(-1.1,-0.1))) errorOut_("c does not contain (-1.1,-0.1)?",1);
if (!c.contains(Point(3.1,-0.1))) errorOut_("c does not contain (3.1,-0.1)?",1);
if (c.contains(Point(3.2,4.2))) errorOut_("c contains (3.2,4.2)?",1);
if (c.contains(Point(-1.2,4.2))) errorOut_("c contains (-1.2,4.2)?",1);
if (c.contains(Point(-1.2,-0.2))) errorOut_("c contains (-1.2,-0.2)?",1);
if (c.contains(Point(3.2,-0.2))) errorOut_("c contains (3.2,-0.2)?",1);
结果:
fail1: c contains (-1.2,4.2)?
fail1: c contains (-1.2,-0.2)?
fail1: c contains (3.2,-0.2)?
【问题讨论】:
-
看到代码中很难匹配括号的那一行了吗?你匹配错了。