我正在尝试测试计算多边形区域的公式。但是,我似乎无法编译。
#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
答案 0 :(得分:1)
声明和定义不匹配。
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]);
答案 1 :(得分:0)
这就是你调用函数的方法:
cout << "Your area is: " << computeArea() << endl;
这就是你的函数原型:
double computeArea(int *X, int *Y, int points)
正如您所看到的,它需要3个参数,而您没有通过任何参数。
再次,另一个原型:
double computeArea(int, int, int);
第一个使用指针,第二个使用普通的int。
因此警告。