Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
3 / 3 / 4
Регистрация: 03.11.2015
Сообщений: 89

Какой пользоваться логикой,при решении графических задач?

10.12.2016, 11:54. Показов 1075. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Какой пользоваться логикой,при решении графических задач?Задачи вида:

Найти на оси Ох такую точку,чтобы сумма расстояний от нее до заданных двух точек на плоскости была минимальной.
Ввод: x1,y1,x2,y2
Вывод абсцисса искомой точки:--??

Как начинать решать такие задачи?Может лучше нарисовать в тетради,или какой логикой пользоваться,подскажите пожалуйста?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2016, 11:54
Ответы с готовыми решениями:

При решении, каких прикладных задач используются многомерные массивы?
Желательно с примерами. И ещё не подскажите какие виды схемы программ бывают (Я так понимаю блок-схемы, но какие виды схем?)

Какой книгой лучше пользоваться при изучении visual c++ 2008
Решил изучить visual c++ 2008. Какой книгой лучше пользоваться при изучении(полый "0" в с++)?

решении геометричиских задач в с++
Как найти площадь круга,и площадь треугальника.Как это должно выглядеть в программе?

15
J5
25 / 25 / 9
Регистрация: 22.12.2013
Сообщений: 107
10.12.2016, 12:19
Valuamba, по логике, ваша точка должна располагаться между заданными x1 и x2. Следовательно, мы перебираем через цикл все точки в отрезке на оси Ox между заданными и по великой теореме египтян (та самая, которую своровал Евклид) через прямоугольный треугольник находим расстояния между заданными точками и нашей, проверяемой, после чего суммируем их. Сравнив сумму с прошлыми результатами находим необходимую нам точку. Выводим значение точки при которой сумма минимальна.
1
76 / 73 / 67
Регистрация: 18.09.2015
Сообщений: 234
10.12.2016, 14:11
Перебор это конечно хорошо, но мне кажется есть более аналитически способ
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
#include <iostream>
using namespace std;
 
#define POW2(a) ((a)*(a))
#define DIST(x1,y1,x2,y2) (sqrt(POW2(x1-x2) + POW2(y1-y2)))
#define MIN(x1,x2) ((x1) < (x2) ? (x1) : (x2))
#define MAX(x1,x2) ((x1) > (x2) ? (x1) : (x2))
 
int main()
{
    float x1, y1, x2, y2, sum;
    cin >> x1 >> y1 >> x2 >> y2;
 
    float tmp_x, tmp_sum = 999, x = MIN(x1,x2);
 
    do
    {
        if (DIST(x, 0, x1, y1) + DIST(x, 0, x2, y2) < tmp_sum)
        {
            tmp_sum = DIST(x, 0, x1, y1) + DIST(x, 0, x2, y2);
            tmp_x = x;
        }
        x += 0.01;
    } while (x <= MAX(x1, x2));
 
    cout << tmp_x << " " << tmp_sum << endl;
}
1
J5
25 / 25 / 9
Регистрация: 22.12.2013
Сообщений: 107
10.12.2016, 15:20
amaralikyr, можно даже теорему вывести, другое дело в том, что тогда искать при готовой теореме? Только лишь формулу, что как то не сопоставимо с графической задачей и поиском.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
10.12.2016, 15:25
Цитата Сообщение от J5 Посмотреть сообщение
с графической задачей
А что вы подразумеваете под графической задачей и почему вы решили, что координаты точек целые?
0
J5
25 / 25 / 9
Регистрация: 22.12.2013
Сообщений: 107
10.12.2016, 15:28
Mr.X, то, что поддается представлению. А кто решил, что координаты лишь целые?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
10.12.2016, 15:36
Цитата Сообщение от J5 Посмотреть сообщение
А кто решил, что координаты лишь целые?
Да тут один товарищ:
Цитата Сообщение от J5 Посмотреть сообщение
мы перебираем через цикл все точки в отрезке на оси Ox между заданными
0
J5
25 / 25 / 9
Регистрация: 22.12.2013
Сообщений: 107
10.12.2016, 15:38
Mr.X, и где здесь идет речь о целых значениях?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
10.12.2016, 15:43
Цитата Сообщение от J5 Посмотреть сообщение
и где здесь идет речь о целых значениях?
Жжете! Ладно, успехов вам в переборе всех значений double на отрезке в сей "графической" задаче!
0
J5
25 / 25 / 9
Регистрация: 22.12.2013
Сообщений: 107
10.12.2016, 15:48
Mr.X, да вы тоже выдаете жару! Приписываете мне перебор значений точности типа double. Я этого не писал.
0
Падаван С++
 Аватар для obivan
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
10.12.2016, 15:50
я чего то может не понял но в чем проблемма, почему нельзя опустить перпендикуляр на Ox, т.е y = 0, находим центер между x1 и x2 и все, это будет самая оптимальная точка, разве нет ?
0
76 / 73 / 67
Регистрация: 18.09.2015
Сообщений: 234
10.12.2016, 15:55
нет
0
Падаван С++
 Аватар для obivan
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
10.12.2016, 16:05
Цитата Сообщение от amaralikyr Посмотреть сообщение
нет
а почему, можно ссылку куда нибудь, потому что я потестил, помойму любая точка на Ох которая лежит между х1, х2 подходит к нашей задаче

Добавлено через 29 секунд
P.S я говорю о 2мерной системе координат

Добавлено через 2 минуты
по условию задачи нам вообще подходит любая точка x которая находится в промежутке от x1 до x2 включительно
0
76 / 73 / 67
Регистрация: 18.09.2015
Сообщений: 234
10.12.2016, 16:26
obivan, Если отрезок, проведенный от первой точке ко второй параллелен оси Ох, то да, это будет самая оптимальная точка, а если взять к примеру (2,2) и (3,3)? Используя мой код перебора , оптимальная точка будет ~2,4 но не 2,5, как вы предполагаете.
2
Падаван С++
 Аватар для obivan
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
10.12.2016, 16:46
amaralikyr, все понял проблему, спасибо за разъяснение
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
10.12.2016, 19:27
Ну, на самом деле автор прав, назвав эту задачу графической, так как она решается с помощью элементарного графического построения.
Если точки лежат по разные стороны от оси абсцисс, то очевидно, что решением будет точка пересечения отрезка, соединяющего эти точки, с осью абсцисс. Если же точки лежат по одну сторону, то отражаем одну из них относительно оси абсцисс. Очевидно, что решение от этого не изменится, и случай сводится к первому.
Если же одна из точек лежит на оси абсцисс, то она и будет решением.
Если же обе точки лежат на оси абсцисс, то любая точка между ними будет решением, т.е. случай свелся к предыдущему.

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
//Найти на оси Ох такую точку,чтобы сумма расстояний от нее
//до заданных двух точек на плоскости была минимальной.
//Ввод: x1,y1,x2,y2
//Вывод абсцисса искомой точки:--??
///////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    double  x1{};
    double  y1{};
 
    double  x2{};
    double  y2{};
 
    std::cin    >>  x1
                >>  y1
 
                >>  x2
                >>  y2;
 
    y1  =   std::abs(y1);
    y2  =   std::abs(y2);
 
    auto    denom   =   y1 + y2;
 
    std::cout   <<  (
                        denom
                            ?   (x1 * y2 + x2 * y1) / denom
                            :   x1
                    )
 
                <<  std::endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2016, 19:27
Помогаю со студенческими работами здесь

Дейтел. Помощь в решении задач из книги
Добрый день. Начал изучение С++ по книге &quot;Как программировать на С++&quot; 5 издание. Установлена IDE Code::Blocks компилятор GCC. Не...

очень нужна подмога в решении задач!
Ребят сразу прошу прощения, но очень нужна помощь в решении задач по С++. сам ничего не соображаю. необходимо решить пару простых задач. ...

Применение матричного аппарата в программном решении оптимизационных задач
Применение матричного аппарата в программном решении оптимизационных задач на языке си++. Подскажите пожалуйста , что эта программа...

Вопросы при решении задач (на конус)
Добрый вечер. Задали большое количество задачек на конус, частично знаю как решать, но периодически возникают мелкие &quot;затупы&quot;...

Использование условных операторов при решении задач
1) Даны две переменные целого типа: А и В. Если их значения не равны, то присвоить каждой переменной максимальное из этих значений, а если...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru