对“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]);
我正在尝试测试计算多边形面积的公式。但是,我似乎无法编译。
#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]);