-5

次の機能がありますが、何が問題なのかわかりません。私は初心者なので、できるだけ簡単にお願いします。

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));
}

}

4

3 に答える 3