0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
|
|
1 | |
Программа на алгоритмы и контейнеры!02.06.2011, 19:47. Показов 2255. Ответов 21
Метки нет (Все метки)
Друзья, задали написать программу на алгоритмы и контейнеры. Смотрю на условие задачки и даже не знаю за что схватиться. Подскажите идею, алгоритм, хоть что-то. Чертовски буду благодарна!
Корабли присылают в каждый момент времени данные о своей скорости и направлении и свои координаты. Необходимо предупредить пользователя, если данные не согласованы (т.е. если изменение координат не соответствует скорости и направлению движения корабля). Землю считать плоской.
0
|
02.06.2011, 19:47 | |
Ответы с готовыми решениями:
21
Ассоциативные контейнеры(алгоритмы)с++ Алгоритмы, инетаторы и контейнеры Линейный Алгоритмы, программа на языке Паскаль ( СРОЧНО ) Реализовать алгоритмы построения прямой: простой пошаговый алгоритм и алгоритмы Брезенхема |
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
|
02.06.2011, 21:59 | 2 |
Предположим, на входе у нас контейнер-вектор, - "А", - с элементами-координатами всех кораблей и направлением движения + скорость движения.
Для каждого элемента контейнера "А" рассчитываем по имеющимся координатам, направлению и скорости и записываем в контейнер "Б". При следующем получении контейнера "А", сравниваем координаты с рассчитанными в контейнер "Б" и если отличаются сильно, выводим предупреждение.
0
|
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
|
|
02.06.2011, 22:25 [ТС] | 3 |
Не поняла. У нас есть уравнение движения x=v*t + x0. Параметры v, x, x0 лежат в контейнере (t туда же положить?), что именно записывается в контейнер В? И что значит сильно отличаются?
0
|
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
02.06.2011, 22:26 | 4 |
А если корабли присылают свои данные "вразнобой", не строго по порядку, и если они не просто пронумерованы, а идентифицируются похитрее (например, по именам), то лучше даже не вектор, а карту (std::map)
Это у нас алгоритм std::for_each Вообще, я бы обошёлся здесь без контейнера "Б", проще всё в "А" хранить, а вычисления производить непосредственно при получении новых данных.
0
|
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
|
|
02.06.2011, 22:35 [ТС] | 5 |
0
|
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
02.06.2011, 22:42 | 6 |
В общем, так... Создаём запись, описывающую один корабль. Там храним x, y, vx, vy, t - это если описываем корабли на плоской карте. Создаём вектор, хранящий такие записи. Когда корабль присылает очередную порцию данных (а в ней тот же состав данных), вычисляем сначала dt = t1 - t0, затем вычисляем предполагаемые координаты по старой порции данных (xp1 = x0 + dt*vx0, yp1 = y0 + dt*vy0). Вычисляем расстояние между точками (xp1, yp1) и (x1, y1), делим расстояние на dt, сравниваем с некоторым пороговым значением, которое задаём из общих соображений. Если выше порога, то данные не согласованы - координаты изменялись чересчур сильно.
1
|
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
|
|
02.06.2011, 22:47 [ТС] | 7 |
вот, на счет порогового значения: как его вычислить? и на сколько полученное значение должно быть больше?
0
|
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
02.06.2011, 22:51 | 8 |
Просто задаёшь из общих соображений. Например, уславливаешься, что изменение больше, чем на 10 м/с для корабля подозрительно.
Просто больше. Хотя бы даже и на одну мильённую. Можешь даже два порога ввести, если хочешь усложнить: скажем, >2 м/с - подозрительно, >10 м/с заведомо неверно.
0
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
|
02.06.2011, 23:12 | 9 |
Это означает через равные, заданные промежутки?
Пример данных в студию.
0
|
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
|
|
02.06.2011, 23:18 [ТС] | 10 |
Да, промежутки равные. Например, 10 секунд, 20 секунд.
Пример данных: 10 м/c, х=10м, y=20м, направление положительное
0
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
|
02.06.2011, 23:31 | 11 |
Положительное направление!? Это как?!
-- В положительном направлении от нас находится Смольный Собор. -- Булочная находится от вас в положительном направлении. -- Знаете, пройдите 10м в положительном направлении, потом сверните на отритцательное.
0
|
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
|
|
02.06.2011, 23:50 [ТС] | 12 |
К примеру: корабль был в точке А с координатой (2,3), а доплыл до точки В с координатой (-9,2).
А вот булочной в положительном направлении от меня нет=(
0
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
|
03.06.2011, 00:53 | 13 |
Оу-кей. Четыре вопроса на засыпку.
Корабль из А(0, 0) приплыл в Б(1, 1). В каком направлении он плыл? Корабль из А(0, 0) приплыл в Б(-1, 1). В каком направлении он плыл? Корабль из А(0, 0) приплыл в Б(1, -1). В каком направлении он плыл? Корабль из А(0, 0) приплыл в Б(-1, -1). В каком направлении он плыл?
0
|
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
|
|
03.06.2011, 09:36 [ТС] | 14 |
Поговорила с препододом. Он объяснил так и так:
1. Направление - это угол поворота вектора скорости. Т.е. если скорость 20метров в секунду, а направление 45 градусов, то каждую секунду координаты по оси X и Y должны увеличиваться на 14 с небольшим метров (10 sqrt(2) ). 2. Мы говорим о согласованности, если изменение координат соответствует скорости. Если была скорость 20 метров в секунду и угол поворота 0, а обе координаты уменьшились - ясно, что данные не согласованы.
0
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
||||||
03.06.2011, 20:13 | 16 | |||||
Я так понимаю, что просто подсказок мало, надо за вас еще код написать?
2
|
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
|
|
03.06.2011, 22:01 [ТС] | 17 |
Ох, спасибо Вам огромнейшее. Я сейчас пытаюсь написать что-то аналогичное.
Добавлено через 21 минуту Однако функция pow не нравится: error C2666: 'pow' : 6 overloads have similar conversions
0
|
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
|
|
03.06.2011, 22:29 [ТС] | 19 |
c fpow вроде не ругается
Добавлено через 11 минут а зачем нам нужно останавливать работу на 1 секунду? sleep(1)
0
|
04.06.2011, 00:04 | 20 |
ага на 1 мс?
0
|
04.06.2011, 00:04 | |
04.06.2011, 00:04 | |
Помогаю со студенческими работами здесь
20
Циклические алгоритмы. Алгоритмы обработки последовательностей чисел Циклические алгоритмы. Алгоритмы обработки последовательностей чисел Циклические алгоритмы (Алгоритмы с одним циклом) Контейнеры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |