对“computeArea(int,int,int)”的未定义引用

undefined reference to `computeArea(int, int, int)'

我正在尝试测试计算多边形面积的公式。但是,我似乎无法编译。

#include <iostream>

using namespace std;

int main (int argc, char** argv)
{
    int xvalue[12];
    int yvalue[12]; 

    int X = 0;
    int Y = 0;

    double area = 0.0;

    double computeArea(int *, int *, int);

    for (int i=0; i<12; i++)
    {
            cout << "\nPlease enter x-ordinate of pt " << i+1 << ": "; 
            cin >> X;
            xvalue[i] = X;

            cout << "Please enter y-ordinate of pt " << i+1 << ": ";
            cin >> Y;
            yvalue[i] = Y;
    }

    /*for (int i=0; i<12; i++)
    {
        computeArea(xvalue[i], yvalue[i], 12);
    }*/

    area = computeArea(xvalue, yvalue, 12);

    cout << "Your area is: " << area << endl;

}

double computeArea(int *X, int *Y, int points)
{   
    double area;
    int i;
    int j=points-1;

    for (i=0; i<points; i++) 
    {
        area+=(X[j]+X[i])*(Y[j]-Y[i]);
        j=i; 
    }

    return area*.5;

}

感谢 R Sahu,脚本现在可以编译,所以我输入了 12 个坐标,它们是:

15, 3
15, 5
13, 5
13, 7
15, 7
15, 9
17, 9
17, 7
19, 7
19, 5
17, 5
17, 3

但是出来的结果是240,这是错误的,应该是20

您是这样调用函数的:

    cout << "Your area is: " << computeArea() << endl;

这就是你的函数原型:

double computeArea(int *X, int *Y, int points)

如您所见,它需要 3 个参数,而您传递的是 none。

再次,另一个原型:

    double computeArea(int, int, int);

第一个使用指针,第二个使用普通整数。

因此警告。

声明和定义不匹配。

double computeArea(int, int, int);

double computeArea(int *X, int *Y, int points)

将声明更改为:

double computeArea(int *, int *, int);

改变你的称呼方式。而不是

for (int i=0; i<12; i++)
{
    computeArea(xvalue[i], yvalue[i], 12);
}

使用

double area = computeArea(xvalue, yvalue, 12);

打印区域,而不是

cout << "Your area is: " << computeArea() << endl;

使用

cout << "Your area is: " << area << endl;

编辑

您还没有将 area 初始化为 0。这需要修复。

您用来计算面积的公式不正确。需要

    area += (X[j]*Y[i] - X[i]*Y[j]);

参见 http://mathworld.wolfram.com/PolygonArea.html