Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
67 / 0 / 0
Регистрация: 24.09.2009
Сообщений: 80
1

Найти растояние

05.06.2010, 20:36. Показов 1114. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не могу понять с чего начать...
Найти расстояние между двумя заданными множествами точек на плоскости.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2010, 20:36
Ответы с готовыми решениями:

макс и мин растояние между точками
задача в массиве (х) заданы координаты точек х и в массиве (у) координаты точек у найти макс и мин...

Ближайшее растояние между двумя точками до прямой
Пожалуйста напишите программу Даны две точки A(x1,y1) и B(x3,y3). Определить, какая из точек A и...

Как расчитать растояние на координатной плоскости напрямую?
по пиратской карте даются указания куда идти (направление и число шагов) шаги всегда целые нужно...

Подскажите как найти растояние
Подскажите как находить это расстояние (нужное расстояние я выделил красным). Радиус 50, стороны...

2
102 / 102 / 23
Регистрация: 12.05.2010
Сообщений: 232
05.06.2010, 21:10 2
я так понимаю это минимальное расстояние между точками из разных множеств...
следовательно элементарный алгоритм перебора
береш 1ю точку из 1го множества и по порядку меряешь расстояние с каждой из 2го множества, фиксируешь минимальное в отдельный переменных, если нашло лучший вариант замещаешь.... даелее 2я точка из 1го множества со всеми из второго.... 3я.... итд...
1
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
05.06.2010, 23:03 3
Лучший ответ Сообщение было отмечено kabl92 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
//Найти расстояние между двумя заданными множествами точек на плоскости. 
#include <string>
#include <iostream>
#include <iomanip>
#include <vector>
#include <sstream>
#include <cmath>
#include <algorithm>
 
typedef std::string  T_str;
 
struct T_point
{
    double x_;
    double y_;
    T_point(double x = 0, double y = 0) : x_(x), y_(y)
    {}
 
    T_point(const T_str&  str_coord)
    {
        std::istringstream  in_potok(str_coord);        
        in_potok >> x_;        
        in_potok >> y_;
    }
 
    operator T_str() const
    {
        std::ostringstream  out_potok;
        out_potok << "(" << x_ << ", " << y_ << ")";
        return  out_potok.str();        
    }
 
    double distance(const T_point&  point) const
    {
        double x_shift = x_ - point.x_;
        double y_shift = y_ - point.y_;
        return sqrt(x_shift * x_shift + y_shift * y_shift);
    }
};
 
typedef std::vector<T_point>   T_points;
typedef std::vector<T_points>  T_point_sets;
typedef std::vector<double>    T_distances;
 
double get_dist(T_point_sets  point_sets)
{
    T_distances  distances;
    //Обходим все точки первого множества и находим для каждой из них
    //расстояние для каждой точки второго множества, и записываем это
    //расстояние в distances.
    for(T_points::const_iterator set1_it = point_sets[0].begin();
        set1_it != point_sets[0].end(); ++set1_it)
    {
        for(T_points::const_iterator set2_it = point_sets[1].begin();
            set2_it != point_sets[1].end(); ++set2_it)
        {
            distances.push_back(set1_it->distance(*set2_it));
        }
    }
    return *std::min_element(distances.begin(), distances.end());
}
 
int main()
{
    std::locale::global(std::locale("rus"));
    T_point_sets  point_sets(2);
    for(int point_set_ind = 0; point_set_ind < point_sets.size(); ++point_set_ind)
    {
        std::cout << std::endl
                  << "Введите координаты точек "
                  << point_set_ind + 1
                  << "-го множества"
                  << std::endl
                  << " (парами через пробел, конец ввода - пустая строка):"
                  << std::endl;
        for(int point_ind = 1; ; ++point_ind)
        {
            std::cout  << "точка " << point_ind << ": ";
            T_str  str_point_coords;
            getline(std::cin, str_point_coords);
            if(str_point_coords.empty()) break;
            point_sets[point_set_ind].push_back(str_point_coords);
        }        
    }
    std::cout << std::endl;
    for(int point_set_ind = 0; point_set_ind < 2; ++point_set_ind)
    {
        std::cout << std::endl
                  << point_set_ind + 1 << "-е множество:" << std::endl;       
        for(size_t  point_ind = 0; 
            point_ind < point_sets[point_set_ind].size(); ++point_ind)
        {
            std::cout << "точка " 
                      << point_ind + 1 
                      << ": " 
                      << T_str(point_sets[point_set_ind][point_ind])                                            
                      << std::endl;
        }
    }
 
    std::cout << std::endl
              << std::endl
              << "Расстояние между этими множествами равно: "
              << get_dist(point_sets)
              << std::endl;
    return 0;
}
1
05.06.2010, 23:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2010, 23:03
Помогаю со студенческими работами здесь

Найти кратчайшее растояние до поверхности для каждой из множества точек
Есть конечное множество точек в почти замкнутой поверхности (красные точки), т.е. поверхность можно...

Найти номера пары точек, растояние между которым наибольшее
Даны координаты n точек на плоскости: (X1,y1),..., (Xn,Yn) (n &lt; 30 ). Найти намера пары точек,...

Найти площадь пятиугольника используя формулу Герона и растояние между двумя точками ! И при этом нада использовать процедуры и функции.
Всем привет.Помогите решить задачу. Заранее спасибо.... Найти площадь пятиугольника используя...

Евклидово растояние
Есть база данных,нужно рассчитать расстояние между элементами. Данные из БД вывел в масив 3х7 ....

Как уменьшить растояние?
Html&lt;table&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt; &lt;h1 align=&quot;center&quot;&gt;Регистрация бизнеса&lt;/h1&gt; &lt;/td&gt; &lt;td&gt; ...

Добавить растояние к текущему
Есть DoubleAnimation и нужно при наведении добавлять к ширине &lt;DoubleAnimation...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru