我有以下功能,我无法理解它有什么问题。我是初学者,所以请尽量简单。
我在第3个单循环中得到错误,我尝试为数组分配一些值,大小匹配,我不知道如何解决它。
int Planet::locateClosestDanger(int x,int y){
int n=0;
for (int i=0;i<getZones()->size();i++){ // evaluate the size of the array
if (getZones()->at(i)->getAccessDanger()>0.5){
n++;
}
}
int m=0;
int dangerAtX[n];
int dangerAtY[n];
for (int i=0;i<getZones()->size();i++){ // assign values to arrays for the locations of the objects
if (getZones()->at(i)->getAccessDanger()>=0.6){
dangerAtX[m]=getZones()->at(i)->getPosZoneX();
dangerAtY[m]=getZones()->at(i)->getPosZoneY();
m++;
}
}
float r[n];
for (int i=0;i<n;i // compute all euclidean distances and assign values to array
r[i]=BOO::eudi(x,y,dangerAtX,dangerAtY); // here I get the error
}
int temp;
int q=r;
for (int i=0;i<n;i++){ // Bubblesort, smallest euclidean distance goes to r[0]
for (int j=0;j<n-1;j++){
if (r[j]>r[j+1]){
temp=r[j];
r[j]=r[j+1];
r[j+1]=temp;
}
}
}
int index;
for (int i=0;i<n;i++){ // find index on array, coordinates of r[0]
if (q[i]=r[0]){
index=i;
}
}
return dangerAtX[index], dangerAtY[index]; // return the coordinates
}
namespace BOO{
float eudi(int x,int y,int X,int Y){
return sqrt((float)pow(abs(x-X),2)+(float)pow(abs(y-Y),2));
}
}
答案 0 :(得分:3)
此:
for (int i=0;i<n;i // compute all euclidean distances and assign values to array
r[i]=BOO::eudi(x,y,dangerAtX,dangerAtY); // here I get the error
}
缺少) {
另外
return dangerAtX[index], dangerAtY[index]; // return the coordinates
不会返回x,y
坐标。函数的返回类型为int
,,
运算符的值将根据您的案例dangerAtY[index]
计算到列表中的最后一个表达式。使用std::pair
返回一对值。
根据您的评论,当您将BOO::eudi
和eudi(int x,int y,int X,int Y)
数组作为第三和第四参数传递时,dangerAtX
的签名为dangerAtY
。 dangerAtX
和dangerAtY
的类型为int *
,而方法需要int
。您可能打算致电BOO::eudi(x,y,dangerAtX[i],dangerAtY[i])
。
答案 1 :(得分:1)
for (int i=0;i<n;i // ...
缺少右括号,并打开括号。
声明
float eudi(int x,int y,int X,int Y)
你说函数eudi
需要四个int
个参数,但是当你调用函数时,你将两个数组(它们衰减到指针)作为最后两个参数传递。
你可能打算做
BOO::eudi(x,y,dangerAtX[n],dangerAtY[n]);
注意使用数组的索引。
答案 2 :(得分:0)
你没有向我们展示eudi方法的声明,但我敢打赌这是错误的。
您的数组dangerousAtX因此被定义:
int dangerAtX[n];
这是int
s的数组,因此标识符dangerAtX
的类型为int*
。你对eudi的第三和第四个参数有什么类型?