在XY点阵列中查找三个XY点的最大面积

时间:2013-05-02 22:45:33

标签: c++ arrays object compiler-errors

我正在尝试使用(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; 
}

2 个答案:

答案 0 :(得分:3)

double area = 0;

tempArea = area(a[i],a[n],a[p]); 
         ///^^^

与您的函数area具有相同的名称。尝试使用其他变量名称,例如:maxArea。同时,最好将您的函数名称更改为以动词开头,例如:getAreacomputeArea

还有一点:

 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)

因为他们的范围。

更改这两个名称,应该解决问题。