我正在尝试使用(X,Y)形式的XY点阵列中的三个XY点找到最大区域。
我目前正在调用区域函数的错误called object type 'double' is not a function or function pointer
,我不知道为什么。另外,我不知道这个功能是否接近正确,我只是乱搞这一点。谢谢您的帮助!
double area( const Point & a, const Point & b, const Point & c){
double side1 = a.distance(b);
double side2 = b.distance(c);
double side3 = c.distance(a);
double s = (side1 + side2 + side3 / 2.0);
return sqrt(s * (s - side1) * (s - side2) * (s - side3));
}
double maxArea( const Point a[], unsigned elements ){
double area = 0;
double tempArea = 0;
for (unsigned i = 0 ; i < elements; i++)
for (unsigned n = 0; n < elements; n++)
for (unsigned p = 0; p < elements; p++) {
tempArea = area(a[i],a[n],a[p]); //error here
if(tempArea > area){
area = tempArea;
}
}
return area;
}
答案 0 :(得分:3)
double area = 0;
tempArea = area(a[i],a[n],a[p]);
///^^^
与您的函数area
具有相同的名称。尝试使用其他变量名称,例如:maxArea
。同时,最好将您的函数名称更改为以动词开头,例如:getArea
或computeArea
。
还有一点:
double s = (side1 + side2 + side3 / 2.0);
应该是
double s = (side1 + side2 + side3) / 2.0;
答案 1 :(得分:1)
我建议你看一下你命名函数和变量的方式。他们不是很清楚。
这个区域 double area = 0;
将在此区域之前使用
double area( const Point & a, const Point & b, const Point & c)
因为他们的范围。
更改这两个名称,应该解决问题。