У меня действительно очень странная проблема, которую я просто не могу понять.Итак, вы можете посмотреть, вот мой код;
point * findLongPaths(point * points, double threshold_distance) {
int i = 0;
int pointsAboveThreshold = countPointsAboveThreshold(points, threshold_distance);
point * pointsByThreshold = new point[sizeof(points)];
pointValues * pointsToCalculate = new pointValues[pointsAboveThreshold];
//pointValues pointsToCalculate[pointsAboveThreshold];
//point orderedPoints[pointsAboveThreshold];
while (points[i].end != true) {
point pointOne = points[i];
point pointTwo = points[i + 1];
//Check to see if the distance is greater than the threshold, if it is store in an array of pointValues
double distance = distanceBetweenTwoPoints(pointOne, pointTwo);
if (distance > threshold_distance) {
pointsToCalculate[i].originalLocation = i;
pointsToCalculate[i].distance = distance;
pointsToCalculate[i].final = pointTwo;
//If the final point has been calculated, break the loop
if (pointTwo.end == true) {
pointsToCalculate[i].end = true;
break;
} else {
pointsToCalculate[i].end = false;
i++;
}
} else if (points[0].end == true || pointsAboveThreshold == 0) {
//If there is no points above the threshold, return an empty point
if (points[0].end == true) {
point emptyPoint;
emptyPoint.x = 0.0;
emptyPoint.y = 0.0;
emptyPoint.end = true;
pointsByThreshold[0] = emptyPoint;
return pointsByThreshold;
}
}
i++;
}
i = 0;
//Find the point with the lowest distance
int locationToStore = 0;
while (pointsToCalculate[i].end != true) {
Моя проблема в том, что значение i буквально изменяется от 0 до 32679. Первоначально оно было установлено в j, поэтому использовалось другое значениедо того, что было в цикле while, но я попробовал это с i
, чтобы увидеть, изменит ли это что-либо.Однако, если я поставлю точку останова за несколько строк до нее, она останется нулевой.Если я запускаю его без каких-либо точек останова, он меняет значение на 32679.
Почему это так?Это действительно странно, и я понятия не имею, как это исправить?