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

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

Войти
Регистрация
Восстановить пароль
 
predell
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 16
#1

Определить функцию нахождения расстояния между точками. - C++

03.04.2013, 07:19. Просмотров 1049. Ответов 2
Метки нет (Все метки)

Возник вопрос с функцией!
Определить функцию нахождения расстояния между точками. Во множестве точек на плоскости найти пару точек с максимальным расстоянием между ними.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2013, 07:19     Определить функцию нахождения расстояния между точками.
Посмотрите здесь:

Нахождение расстояния между точками C++
C++ Вычисление расстояния между двумя точками, заданными на плоскости их координатами
Определить процедуру вычисления расстояния между двумя точками, заданными своими координатами C++
C++ Вычисление расстояния между двумя точками
Определить наименьшее расстояние между тремя точками C++
Найти периметр и площадь треугольника, используя формулу для расстояния между двумя точками на плоскости C++
C++ Составить программу для вычисления расстояния между точками пересечения окружностей
Определить центр тяжести между точками C++
C++ Создать функцию нахождения расстояния между двумя точками на плоскости
C++ Файл: найти наибольшее и наименьшее расстояния между точками.
Перегрузка функций: Определить функцию, возвращающую расстояние между точками числа. C++
Найти расстояния между точками C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SummerRain
 Аватар для SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
03.04.2013, 07:27     Определить функцию нахождения расстояния между точками. #2
C++
1
2
3
double distance(double x1, double y1, double x2, double y2) {
    return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
где x1, x2, y1, y2 - координаты точек.
Определить максимальное расстояние между точками можно просто тупо перебрав все точки.
zarko97
236 / 17 / 0
Регистрация: 11.10.2015
Сообщений: 79
17.02.2017, 19:37     Определить функцию нахождения расстояния между точками. #3
predell,
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
#include         <iostream>
#include            <cmath>
#include          <complex>
#include         <iterator>
#include          <utility>
#include           <vector>
 
class Points
{
public:
    using T_Coord       =                        double;
    using T_Point       =   std::pair<T_Coord, T_Coord>;
    using T_points_arr  =          std::vector<T_Point>;
 
    explicit Points() : Points(0) { }
    explicit Points(const std::size_t count_) : count(count_) { arr_point.resize(count_); }
    
    friend auto operator<<(std::ostream& os, const Points& other) -> std::ostream&
    {
        std::cout << "Points [" << other.arr_point.size() << "]:" << std::endl;
        std::for_each(other.arr_point.cbegin(), other.arr_point.cend(), 
            [&os](auto& p_) { os << '(' << p_.first << ',' << p_.second << ')' << std::endl; });
        return os;
    }
    friend auto operator>>(std::istream& is, Points& other) -> std::istream&
    {
        int i{ };
        std::for_each(other.arr_point.begin(), other.arr_point.end(),
            [&is, &i](auto& p_) mutable {
            std::cout << "Enter Point [" << i + 1 << "]: ";
            is >> p_.first >> p_.second; 
            ++i;
        });
        return is;
    }
    auto max_path() -> double
    {
        std::pair<T_Point, T_Point> p_;
        double max_ln{ }, temp{ };
        T_points_arr::iterator beg = arr_point.begin(), end = arr_point.end();
        while (beg != end)
        {
            for (T_points_arr::iterator it = beg + 1; it != end; ++it)
            {
                temp = static_cast<double>(std::sqrt(std::abs(std::pow(beg->first, 2) - std::pow(it->first, 2))) 
                    + std::sqrt(std::abs(std::pow(beg->second, 2) - std::pow(it->second, 2))));
                
                if (max_ln < temp) {
                    max_ln = std::move(temp);
 
                    p_ = std::make_pair(std::make_pair(beg->first, beg->first), std::make_pair(it->first, it->second));
                }
            }
            ++beg;
        }
 
        std::cout << "Max length to points ";
        std::cout << '(' << p_.first.first  << ',' << p_.first.second << ')'; 
        std::cout << '(' << p_.second.first << ',' << p_.second.second << ')' << ':';
        
        return max_ln;
    }
private:
    const std::size_t count;
    mutable T_points_arr arr_point;
};
Yandex
Объявления
17.02.2017, 19:37     Определить функцию нахождения расстояния между точками.
Ответ Создать тему
Опции темы

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