在XY点的数组中找到三个XY点的最大面积

Finding the maximum area of three XY points in an array of XY points

本文关键字:XY 三个 大面积 数组      更新时间:2023-10-16

我试图在XY点的数组中以(X,Y)的形式找到三个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; 
}
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;

我建议你应该看看你的函数和变量的命名方式。它们不是很清楚。

将在此区域

之前使用。
double area( const Point & a, const Point & b, const Point & c)

因为它们的作用域。

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