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

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

Войти
Регистрация
Восстановить пароль
 
 
Valuamba
3 / 3 / 2
Регистрация: 03.11.2015
Сообщений: 81
#1

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

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

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

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

Как начинать решать такие задачи?Может лучше нарисовать в тетради,или какой логикой пользоваться,подскажите пожалуйста?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2016, 11:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Какой пользоваться логикой,при решении графических задач? (C++):

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

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

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

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

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

Какой структурой лучше пользоваться? - C++
Есть короче ряд объектов. Из них надо удалить одинаковые. Куда их лучше занести в vector? list? Или что еще?

15
J5
25 / 25 / 6
Регистрация: 22.12.2013
Сообщений: 85
10.12.2016, 12:19 #2
Valuamba, по логике, ваша точка должна располагаться между заданными x1 и x2. Следовательно, мы перебираем через цикл все точки в отрезке на оси Ox между заданными и по великой теореме египтян (та самая, которую своровал Евклид) через прямоугольный треугольник находим расстояния между заданными точками и нашей, проверяемой, после чего суммируем их. Сравнив сумму с прошлыми результатами находим необходимую нам точку. Выводим значение точки при которой сумма минимальна.
1
amaralikyr
61 / 61 / 23
Регистрация: 18.09.2015
Сообщений: 207
Завершенные тесты: 1
10.12.2016, 14:11 #3
Перебор это конечно хорошо, но мне кажется есть более аналитически способ
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 / 6
Регистрация: 22.12.2013
Сообщений: 85
10.12.2016, 15:20 #4
amaralikyr, можно даже теорему вывести, другое дело в том, что тогда искать при готовой теореме? Только лишь формулу, что как то не сопоставимо с графической задачей и поиском.
0
Mr.X
Эксперт С++
3060 / 1705 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
10.12.2016, 15:25 #5
Цитата Сообщение от J5 Посмотреть сообщение
с графической задачей
А что вы подразумеваете под графической задачей и почему вы решили, что координаты точек целые?
0
J5
25 / 25 / 6
Регистрация: 22.12.2013
Сообщений: 85
10.12.2016, 15:28 #6
Mr.X, то, что поддается представлению. А кто решил, что координаты лишь целые?
0
Mr.X
Эксперт С++
3060 / 1705 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
10.12.2016, 15:36 #7
Цитата Сообщение от J5 Посмотреть сообщение
А кто решил, что координаты лишь целые?
Да тут один товарищ:
Цитата Сообщение от J5 Посмотреть сообщение
мы перебираем через цикл все точки в отрезке на оси Ox между заданными
0
J5
25 / 25 / 6
Регистрация: 22.12.2013
Сообщений: 85
10.12.2016, 15:38 #8
Mr.X, и где здесь идет речь о целых значениях?
0
Mr.X
Эксперт С++
3060 / 1705 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
10.12.2016, 15:43 #9
Цитата Сообщение от J5 Посмотреть сообщение
и где здесь идет речь о целых значениях?
Жжете! Ладно, успехов вам в переборе всех значений double на отрезке в сей "графической" задаче!
0
J5
25 / 25 / 6
Регистрация: 22.12.2013
Сообщений: 85
10.12.2016, 15:48 #10
Mr.X, да вы тоже выдаете жару! Приписываете мне перебор значений точности типа double. Я этого не писал.
0
obivan
Падаван С++
419 / 239 / 60
Регистрация: 11.11.2014
Сообщений: 842
Завершенные тесты: 2
10.12.2016, 15:50 #11
я чего то может не понял но в чем проблемма, почему нельзя опустить перпендикуляр на Ox, т.е y = 0, находим центер между x1 и x2 и все, это будет самая оптимальная точка, разве нет ?
0
amaralikyr
61 / 61 / 23
Регистрация: 18.09.2015
Сообщений: 207
Завершенные тесты: 1
10.12.2016, 15:55 #12
нет
0
obivan
Падаван С++
419 / 239 / 60
Регистрация: 11.11.2014
Сообщений: 842
Завершенные тесты: 2
10.12.2016, 16:05 #13
Цитата Сообщение от amaralikyr Посмотреть сообщение
нет
а почему, можно ссылку куда нибудь, потому что я потестил, помойму любая точка на Ох которая лежит между х1, х2 подходит к нашей задаче

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

Добавлено через 2 минуты
по условию задачи нам вообще подходит любая точка x которая находится в промежутке от x1 до x2 включительно
0
amaralikyr
61 / 61 / 23
Регистрация: 18.09.2015
Сообщений: 207
Завершенные тесты: 1
10.12.2016, 16:26 #14
obivan, Если отрезок, проведенный от первой точке ко второй параллелен оси Ох, то да, это будет самая оптимальная точка, а если взять к примеру (2,2) и (3,3)? Используя мой код перебора , оптимальная точка будет ~2,4 но не 2,5, как вы предполагаете.
2
obivan
Падаван С++
419 / 239 / 60
Регистрация: 11.11.2014
Сообщений: 842
Завершенные тесты: 2
10.12.2016, 16:46 #15
amaralikyr, все понял проблему, спасибо за разъяснение
0
10.12.2016, 16:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2016, 16:46
Привет! Вот еще темы с ответами:

Ошибка при решении уравнения - C++
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &quot;locale.h&quot; #include &quot;stdio.h&quot; #include &quot;math.h&quot; #include &quot;iomanip&quot; int...

ACCESS_VIOLATION при решении задачи - C++
Здравствуйте!Тут решал одну простую задачу, но на dl.gsu.by она не проходит последний тест:не пройден 10-й тест. Решение вызвало ошибку...

Округление чисел при решении СЛАУ - C++
Добрый день! Подскажите, пожалуйста, программа решает систему линейных алгебраических уравнений вида AX=B методом Гаусса. Но в конце...

результат не верный при решении задачи - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #include &lt;stdio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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