Funcion возвращает лишние 0 - PullRequest
       10

Funcion возвращает лишние 0

0 голосов
/ 01 октября 2019

У меня есть эта функция, которая вычисляет расстояние между двумя точками, все работает нормально, но в конце я получаю дополнительный ноль.

Мой ввод:

2  3, 12 30, 40 50, 5  1, 12 10, 3  4
float bruteForce(vector< pair <float,float> >::const_iterator brute, vector< pair <float,float> >::const_iterator end, float m)
{
    float min = FLT_MAX;

    for (int i = 0; i < m; i++)  
    {
        for (int j = i+1; j < m; j++)  
        {
            if ( dist(brute[i].first, brute[i].second, brute[j].first, brute[j].second ) < min)  
            {
                min = dist(brute[i].first, brute[i].second, brute[j].first, brute[j].second); 
                cout << min << endl; 
            }
        }
    }

    return min;
}


вывод:

1.41421, 
11.4018, 
34.4093, 
0

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Квентин был прав, это было из-за типов данных с плавающей запятой, которые я использовал, где я не должен был их использовать.

0 голосов
/ 01 октября 2019

A 0 означает «нет расстояния», поэтому в одной точке должно быть две точки. Когда я смотрю на ваш вклад, кажется, что 3 там дважды. Так что это самое короткое расстояние, после этого невозможно найти что-то еще более короткое.

...