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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Количество прожитых человеком дней http://www.cyberforum.ru/cpp-beginners/thread430400.html
Доброго времени суток. Помогите пожалуйста решить такую задачку: Определить количество прожитых человеком дней по дате рождения и текущей дате. Вводится дата рождения в виде: число, месяц, год и...
C++ Операторы передачи управления Вот код: #include <iostream.h> #include <conio.h> #include <math.h> main () { int k; cout << "Input: "; cin >> k; http://www.cyberforum.ru/cpp-beginners/thread430383.html
упорядочить выбранную информацию по возврастанию номеров телефона, а затем записать в файл C++
В исходном файле записана информация об абонентах телефонной станции: фио абонента, шестизначный номер телефона, сумма долга. Выбрать тех абонентов, у которых номер телефона не изменяется при чтении...
C++ Найти среднее значение элементов массива
С++ Ввести одномерный динамический массив из 10 чисел. Найти среднее значение элементов массива, расположенных до максимального по значению элемента массива, и найти произведение элементов...
C++ ОПЕРАТОРЫ ЦИКЛА http://www.cyberforum.ru/cpp-beginners/thread430367.html
Я написал программу для вычисления y(x)=(sin(x+c)-d)/(e+a) при x=1.5(0.1)2, но её нужно переделать используя do while. #include <iostream.h> #include <math.h> #include <stdio.h> #include...
C++ Русские буквы в программах VS2010 Доброго времени. Как в программах VS2008 писать русским шрифтом? Если просто написать printf("раз-два-три"); то выводиться абракадабра. Сегодня просто пробовал программу, написанную в... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.01.2012, 14:39
Пардон, в программу вкралась ошибка.
Вот так правильно:
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()
        );
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru