2016-03-16 6 views
-2

В настоящее время у меня небольшие проблемы, так как мне нужно найти координаты, соответствующие моему минимальному расстоянию. Например, у меня есть человек и три потенциальные станции. Мне нужно найти расстояние между ними, а затем принять минимальное расстояние, а в следующем я должен взять координаты, связанные с этим минимальным расстоянием. Im посылает вам мой цикл только для той части моей программы.координаты min расстояние C++

for (newCoordinate = newPoints.begin(); newCoordinate != newPoints.end(); newCoordinate++)// here are my three potential stations 
{ 
    distanceBetweenBusCoordinateAndNewPoint = sqrt(pow((busRequest->x - newCoordinate->x), 2) + (pow((busRequest->y - newCoordinate->y), 2)));// find min 
    distances.push_back(distanceBetweenBusCoordinateAndNewPoint);//add to the vector 
} 
newdis = min_element(distances.begin(), distances.end());// find the min of min 

Благодарим за помощь!

+0

Какая ошибка? –

+0

В чем ваш вопрос? –

+0

как я сказал, мне нужны координаты, связанные с этим минимальным расстоянием. У меня 3 расстояния и 3 координаты (x, y). Я нахожу их min и вам нужно сохранить координаты, потому что после того, как я возьму эти координаты, я найду еще одну задачу. – michaelprogramm

ответ

0

Я бы рассматривал это как поиск минимального значения в std::vector.

Одна переменная содержит минимальное расстояние; инициализируется до наибольшего значения. Две переменные Point определяют прямую линию, связанную с минимальным расстоянием.

Вот алгоритм:

Calculate distance. 
if distance < minimum distance 
    set Point1 and Point2 to the ordinates used in the distance calculation. 
    set minimum distance to the calculated distance. 

В конце цикла, переменные Point1 и Point2 будут координаты, связанные с minimum distance.

+0

Да, я понимаю, что вы имеете в виду, но моя вина, что я не добавил еще ничего. Например, я нахожу некоторые координаты, связанные с минимальным расстоянием. Тогда мой первый цикл в начале я не опубликовал его, итерацию нового человека, и мне нужно сделать ту же процедуру для этого человека. Вот проблема, у меня уже есть значение Min = предыдущее min distance. Поэтому, если расстояние этого второго человека больше среднего, он не будет добавлен вообще. Поэтому мне нужно решение. Я нахожу координаты станции для первого человека, а затем мне нужно найти новые координаты для второго человека, если он сможет достигнуть – michaelprogramm

+0

станции первой. Надеюсь, что я должен сделать то, что должна делать моя программа. Я все сделал правильно, но проблема здесь. Мое значение Min может стать слишком низким, и тогда у этих людей не будет какой-либо станции, но мне нужно все время проверять, если этот человек не может достичь предыдущего или любого, у этого человека должна быть новая станция с новыми координатами даже если расстояние больше минимального значения после некоторых итераций – michaelprogramm

+0

Потому что я уже сделал то, что вы разместили. Но кстати спасибо за ваш комментарий – michaelprogramm