Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DenProx
Техник
310 / 168 / 5
Регистрация: 09.10.2009
Сообщений: 3,046
#1

Точка, наиболее близкая к центру тяжести - C++

18.01.2012, 09:34. Просмотров 740. Ответов 6
Метки нет (Все метки)

Всем привет! Мне нужно решить такую вот задачку:

Для одинаковых материальных точек с координатами (xi, yi),i = 1,5 определить точку, наиболее близкую к центру тяжести. Координаты точек вводить с клавиатуры. Распечатать координаты всех точек с пометкой наиболее близкой к центру тяжести.

Помогите пожалуйста! Голову уже сломал, ни как не могу понять как ее делать...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2012, 09:34     Точка, наиболее близкая к центру тяжести
Посмотрите здесь:

C++ Получить координаты центра тяжести системы, а также расстояние от центра тяжести до всех точек системы
Центр тяжести C++
Дана точка М(x, y). Присвоить z = 1, если точка принадлежит окружности с радиусом R и центром в точке (a, b) и z = 0 в противном случае. C++
C++ Дана точка A и множество B из N точек. Найти номер точки из множества B, наиболее удаленной от точки A
Центр тяжести C++
Определить центр тяжести между точками C++
C++ Определить координаты точки наиболее близкой к центру тяжести
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
5454 / 1820 / 335
Регистрация: 10.12.2010
Сообщений: 5,384
Записей в блоге: 3
18.01.2012, 10:23     Точка, наиболее близкая к центру тяжести #2
Цитата Сообщение от DenProx Посмотреть сообщение
ни как не могу понять как ее делать...
Сначала определите координаты центра тяжести, затем берите последовательно разность между каждой точкой и центром тяжести. Точка, у которой данная разность минимальная, и будет искомой, т.е. наиболее близкой.
DenProx
Техник
310 / 168 / 5
Регистрация: 09.10.2009
Сообщений: 3,046
18.01.2012, 10:33  [ТС]     Точка, наиболее близкая к центру тяжести #3
HighPredator, спасибо! более понятно теперь) а можно на примере еще? У меня опыта мало в программировании на Си ...
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.01.2012, 12:00     Точка, наиболее близкая к центру тяжести #4
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/////////////////////////////////////////////////////////////////////////////////////////
//Для одинаковых материальных точек с координатами (xi, yi),i = 1,5 определить точку, 
//наиболее близкую к центру тяжести. Координаты точек вводить с клавиатуры. 
//Распечатать координаты всех точек с пометкой наиболее близкой к центру тяжести.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <complex>
#include <iostream>
#include <map>
#include <numeric>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef double                                  T_real;
typedef std::complex    <T_real             >   T_point;
typedef std::vector     <T_point            >   T_points;
typedef std::multimap   <T_real,    T_point >   T_point_of_distance;
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_get_dist_and_point
{
    T_point  C_point_;
    //-----------------------------------------------------------------------------------
    T_get_dist_and_point(const T_point&  C_point)
        :
        C_point_(C_point)
    {}
    //-----------------------------------------------------------------------------------
        T_point_of_distance::value_type  operator() 
            (const T_points::value_type&  point) const
        {
            return  T_point_of_distance::value_type
                        (
                            abs(point - C_point_),
                            point
                        );        
        }
};
/////////////////////////////////////////////////////////////////////////////////////////
void  get_points_distances_to_center_of_mass
    (
        const T_points&         points,
        T_point_of_distance&    point_of_distance_to_center_of_mass
    )
{
    T_point  C_point    =   std::accumulate
                                (
                                    points.begin(),
                                    points.end(),
                                    T_point()
                                );
 
    std::transform
        (
            points.begin(),
            points.end(),
            std::inserter
                (
                    point_of_distance_to_center_of_mass,
                    point_of_distance_to_center_of_mass.begin()
                ),
            T_get_dist_and_point(C_point)
        );
}
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_print_point_and_distance
{
    void  operator() (const T_point_of_distance::value_type  dist_and_point) const
    {
        std::cout   << dist_and_point.second
                    << '\t'
                    << dist_and_point.first
                    << std::endl;
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_input_point
{
    void  operator() (T_points::value_type&  point)
    {
        static int  point_ind = 0;
        std::cout   << "#"
                    << ++point_ind
                    << ":\t";
 
        std::cin >> point;    
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    const int POINTS_TOTAL = 5;
    std::cout   << "Введите координаты "
                << POINTS_TOTAL
                << " точек в виде (1.2,3.4):"
                << std::endl;
 
    T_points    points(POINTS_TOTAL);
 
    std::for_each
        (
            points.begin(),
            points.end(),
            T_input_point()
        );
 
    T_point_of_distance  point_of_distance_to_center_of_mass;
    get_points_distances_to_center_of_mass
        (
            points,
            point_of_distance_to_center_of_mass
        );
 
    std::cout   << std::endl
                << "Координаты точек и их расстояния от их центра тяжести:"
                << std::endl;
 
    std::for_each
        (
            point_of_distance_to_center_of_mass.begin(),
            point_of_distance_to_center_of_mass.end(),
            T_print_point_and_distance()
        );
}
DenProx
Техник
310 / 168 / 5
Регистрация: 09.10.2009
Сообщений: 3,046
18.01.2012, 12:02  [ТС]     Точка, наиболее близкая к центру тяжести #5
Mr.X, Спасибо!!)) Вроде то что нужно))
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.01.2012, 14:39     Точка, наиболее близкая к центру тяжести #6
Пардон, в программу вкралась ошибка.
Вот так правильно:
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/////////////////////////////////////////////////////////////////////////////////////////
//Для одинаковых материальных точек с координатами (xi, yi),i = 1,5 определить точку, 
//наиболее близкую к центру тяжести. Координаты точек вводить с клавиатуры. 
//Распечатать координаты всех точек с пометкой наиболее близкой к центру тяжести.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <complex>
#include <iostream>
#include <map>
#include <numeric>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef double                                  T_real;
typedef std::complex    <T_real             >   T_point;
typedef std::vector     <T_point            >   T_points;
typedef std::multimap   <T_real,    T_point >   T_point_of_distance;
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_get_dist_and_point
{
    T_point  C_point_;
    //-----------------------------------------------------------------------------------
    T_get_dist_and_point(const T_point&  C_point)
        :
        C_point_(C_point)
    {}
    //-----------------------------------------------------------------------------------
        T_point_of_distance::value_type  operator() 
            (const T_points::value_type&  point) const
        {
            return  T_point_of_distance::value_type
                        (
                            abs(point - C_point_),
                            point
                        );        
        }
};
/////////////////////////////////////////////////////////////////////////////////////////
void  get_points_distances_to_center_of_mass
    (
        const T_points&         points,
        T_point_of_distance&    point_of_distance_to_center_of_mass
    )
{
    T_point  C_point    =   std::accumulate
                                (
                                    points.begin(),
                                    points.end(),
                                    T_point()                                
                                );                            
 
    C_point /= points.size();
 
    std::transform
        (
            points.begin(),
            points.end(),
            std::inserter
                (
                    point_of_distance_to_center_of_mass,
                    point_of_distance_to_center_of_mass.begin()
                ),
            T_get_dist_and_point(C_point)
        );
}
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_print_point_and_distance
{
    void  operator() (const T_point_of_distance::value_type  dist_and_point) const
    {
        std::cout   << dist_and_point.second
                    << '\t'
                    << dist_and_point.first
                    << std::endl;
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_input_point
{
    void  operator() (T_points::value_type&  point)
    {
        static int  point_ind = 0;
        std::cout   << "#"
                    << ++point_ind
                    << ":\t";
 
        std::cin >> point;    
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    const int POINTS_TOTAL = 5;
    std::cout   << "Введите координаты "
                << POINTS_TOTAL
                << " точек в виде (1.2,3.4):"
                << std::endl;
 
    T_points    points(POINTS_TOTAL);
 
    std::for_each
        (
            points.begin(),
            points.end(),
            T_input_point()
        );
 
    T_point_of_distance  point_of_distance_to_center_of_mass;
    get_points_distances_to_center_of_mass
        (
            points,
            point_of_distance_to_center_of_mass
        );
 
    std::cout   << std::endl
                << "Координаты точек и их расстояния от их общего центра тяжести:"
                << std::endl;
 
    std::for_each
        (
            point_of_distance_to_center_of_mass.begin(),
            point_of_distance_to_center_of_mass.end(),
            T_print_point_and_distance()
        );
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2012, 14:41     Точка, наиболее близкая к центру тяжести
Еще ссылки по теме:

Определить наиболее богатые и наиболее бедные месторождения C++
Получить координаты центра тяжести системы C++
C++ Сила тяжести шарика в цилиндре
C++ Центр тяжести выпуклого многоугольника
C++ Определить принадлежит точка точка координатам

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

Или воспользуйтесь поиском по форуму:
DenProx
Техник
310 / 168 / 5
Регистрация: 09.10.2009
Сообщений: 3,046
18.01.2012, 14:41  [ТС]     Точка, наиболее близкая к центру тяжести #7
Mr.X, Спасибо!!)))
Yandex
Объявления
18.01.2012, 14:41     Точка, наиболее близкая к центру тяжести
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru