我有以下功能,我不明白它有什么问题。我是初学者,所以请尽可能简单。
我在第三个单循环中收到错误,我尝试将一些值分配给数组,大小匹配,但我不知道如何修复它。
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));
}
}