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

Найти из двух точек на плоскости ближайшую к заданной точке - C++

Восстановить пароль Регистрация
 
xpressforze
 Аватар для xpressforze
5 / 3 / 0
Регистрация: 25.12.2013
Сообщений: 55
16.03.2016, 07:06     Найти из двух точек на плоскости ближайшую к заданной точке #1
Помогите с задачей. На плоскости XOY даны три точки A(x1, y1), B(x2, y2), C(x3, y3). Выяснить, какая из точек B и C расположена ближе к точке A.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2016, 07:06     Найти из двух точек на плоскости ближайшую к заданной точке
Посмотрите здесь:

На плоскости заданы своими целочисленными координатоми n точек. Найти все возможные группы... C++
C++ Заданное множество точек на плоскости. Найти выпуклую оболочку этого множества
C++ Найти такую точку, что шар радиуса R с центром в этой точке содержит максимальное число точек зад
Нахождение значения функции в заданной точке, найти ошибку в алгоритме C++
C++ Найти число точек, находящихся внутри круга радиусом r с центром в заданной точке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
16.03.2016, 07:31     Найти из двух точек на плоскости ближайшую к заданной точке #2
C++
1
2
3
4
5
6
7
8
9
10
11
int x1, y1;//Point A
int x2, y2;//Point B
int x3, y3;//Point C
...
float l12 = std::hypot(std::abs(x1 - x2), std::abs(y1 - y2));
float l13 = std::hypot(std::abs(x1 - x3), std::abs(y1 - y3));
 
if(l12 < l13)
   std::cout << "Точка В расположена ближе к точке А";
else
   std::cout << "Точка С расположена ближе к точке А";
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2901 / 1437 / 396
Регистрация: 18.10.2014
Сообщений: 2,650
16.03.2016, 07:54     Найти из двух точек на плоскости ближайшую к заданной точке #3
Цитата Сообщение от Ilot Посмотреть сообщение
float l12 = std::hypot(std::abs(x1 - x2), std::abs(y1 - y2));
А зачем делать std::abs?
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
16.03.2016, 08:00     Найти из двух точек на плоскости ближайшую к заданной точке #4
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
А зачем делать std::abs?
Верно, не нужно.
xpressforze
 Аватар для xpressforze
5 / 3 / 0
Регистрация: 25.12.2013
Сообщений: 55
18.03.2016, 23:52  [ТС]     Найти из двух точек на плоскости ближайшую к заданной точке #5
Я все равно не понимаю совсем.
SpBerkut
Объявлятель переменных
 Аватар для SpBerkut
905 / 231 / 113
Регистрация: 24.09.2011
Сообщений: 874
Завершенные тесты: 2
19.03.2016, 08:20     Найти из двух точек на плоскости ближайшую к заданной точке #6
Цитата Сообщение от xpressforze Посмотреть сообщение
Я все равно не понимаю совсем.
C++
1
2
3
4
5
6
7
8
9
10
11
int x1, y1;//Point A
int x2, y2;//Point B
int x3, y3;//Point C
...
float l12 = std::hypot(x1 - x2, y1 - y2); //  расстояние от А до В по теореме Пифагора
float l13 = std::hypot(x1 - x3, y1 - y3); //  расстояние от А до С по той же теореме
 
if(l12 < l13)
   std::cout << "Точка В расположена ближе к точке А";
else
   std::cout << "Точка С расположена ближе к точке А";
Байт
 Аватар для Байт
13974 / 8805 / 1227
Регистрация: 24.12.2010
Сообщений: 15,949
19.03.2016, 10:50     Найти из двух точек на плоскости ближайшую к заданной точке #7
Цитата Сообщение от xpressforze Посмотреть сообщение
Я все равно не понимаю совсем
Теорему Пифагора знаешь?
xpressforze
 Аватар для xpressforze
5 / 3 / 0
Регистрация: 25.12.2013
Сообщений: 55
20.03.2016, 20:44  [ТС]     Найти из двух точек на плоскости ближайшую к заданной точке #8
Сделал в итоге так:
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    double A[2];
    double B[2];
    double C[2];
    double AB, AC;
    setlocale(LC_ALL, "Russian");
    cout <<"Введите координату X точки A"<< endl;
    cin >> A[0];
    cout <<"Введите координату Y точки A"<< endl;
    cin >> A[1];
    cout <<"Введите координату X точки B"<< endl;
    cin >> B[0];
    cout <<"Введите координату Y точки B"<< endl;
    cin >>B[1];
    cout <<"Введите координату X точки C"<< endl;
    cin >> C[0];
    cout <<"Введите координату Y точки C"<< endl;
    cin >> C[1];
    AB=sqrt(pow(B[0]-A[0],2.0)+pow(B[1]-A[1],2.0));
    AC=sqrt(pow(C[0]-A[0],2.0)+pow(C[1]-A[1],2.0));
    if (AB>AC)
    {
        cout << "Точка C Находится ближе к точке A" << endl;
    }
    else
    {
        cout << "Точка B Находится ближе к точке A" << endl;
    }
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2016, 21:53     Найти из двух точек на плоскости ближайшую к заданной точке
Еще ссылки по теме:

Функция, которая вернет номера двух из трех заданных точек на плоскости, расстояние между которыми минимально C++
Сравнение двух точек на координатной плоскости C++
C++ Дано множество точек на плоскости. Необходимо найти 4 точки (с максимальными и минимальными значениями x и y)

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

Или воспользуйтесь поиском по форуму:
SpBerkut
Объявлятель переменных
 Аватар для SpBerkut
905 / 231 / 113
Регистрация: 24.09.2011
Сообщений: 874
Завершенные тесты: 2
20.03.2016, 21:53     Найти из двух точек на плоскости ближайшую к заданной точке #9
Цитата Сообщение от xpressforze Посмотреть сообщение
C++
1
sqrt(pow(C[0]-A[0],2.0)+pow(C[1]-A[1],2.0));
Ходят слухи, что преподы любят использование стандартной функции hypot из math.h. Что-то вроде этого:
C++
1
hypot(C[0]-A[0], C[1]-A[1]);
Yandex
Объявления
20.03.2016, 21:53     Найти из двух точек на плоскости ближайшую к заданной точке
Ответ Создать тему
Опции темы

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