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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
myaho
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
#1

Программа на алгоритмы и контейнеры! - C++

02.06.2011, 19:47. Просмотров 1274. Ответов 21
Метки нет (Все метки)

Друзья, задали написать программу на алгоритмы и контейнеры. Смотрю на условие задачки и даже не знаю за что схватиться. Подскажите идею, алгоритм, хоть что-то. Чертовски буду благодарна!

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

Алгоритмы, инетаторы и контейнеры - C++
Всем привет! Написал программу в которой необходимо ввести список студентов и для каждого из них еще несколько данных из файла. Тепер...

Ассоциативные контейнеры(алгоритмы)с++ - C++
Создать vector<int>, считать в него список чисел из текстового файла. Выполнить, не используя циклов: поиск наибольшего значения; ...

Контейнеры - C++
Здравствуйте. Помогите написать программу на С, с этим языком не знаком почти, а контейнеры вообще не понимаю. В общем беда полная.... ...

контейнеры С++ - C++
Задача:заполнить массив четными числами ,а множество – нечетными,с пом. алгоритма merge()объединить эти контейнеры в вектор… Но если ...

Контейнеры с++ - C++
Ребят,подскажите пожалуйста,какую функцию нужно использовать,чтобы проверить массив на упорядоченность(мне нельзя использовать циклы и...

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

21
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
02.06.2011, 21:59 #2
Предположим, на входе у нас контейнер-вектор, - "А", - с элементами-координатами всех кораблей и направлением движения + скорость движения.
Для каждого элемента контейнера "А" рассчитываем по имеющимся координатам, направлению и скорости и записываем в контейнер "Б".
При следующем получении контейнера "А", сравниваем координаты с рассчитанными в контейнер "Б" и если отличаются сильно, выводим предупреждение.
0
myaho
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
02.06.2011, 22:25  [ТС] #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Предположим, на входе у нас контейнер-вектор, - "А", - с элементами-координатами всех кораблей и направлением движения + скорость движения.
Для каждого элемента контейнера "А" рассчитываем по имеющимся координатам, направлению и скорости и записываем в контейнер "Б".
При следующем получении контейнера "А", сравниваем координаты с рассчитанными в контейнер "Б" и если отличаются сильно, выводим предупреждение.
Не поняла. У нас есть уравнение движения x=v*t + x0. Параметры v, x, x0 лежат в контейнере (t туда же положить?), что именно записывается в контейнер В? И что значит сильно отличаются?
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
02.06.2011, 22:26 #4
Цитата Сообщение от lemegeton Посмотреть сообщение
Предположим, на входе у нас контейнер-вектор,
А если корабли присылают свои данные "вразнобой", не строго по порядку, и если они не просто пронумерованы, а идентифицируются похитрее (например, по именам), то лучше даже не вектор, а карту (std::map)

Цитата Сообщение от lemegeton Посмотреть сообщение
Для каждого элемента контейнера "А"
Это у нас алгоритм std::for_each

Вообще, я бы обошёлся здесь без контейнера "Б", проще всё в "А" хранить, а вычисления производить непосредственно при получении новых данных.
0
myaho
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
02.06.2011, 22:35  [ТС] #5
Цитата Сообщение от Nick Alte Посмотреть сообщение
А если корабли присылают свои данные "вразнобой", не строго по порядку, и если они не просто пронумерованы, а идентифицируются похитрее (например, по именам), то лучше даже не вектор, а карту (std::map)


Это у нас алгоритм std::for_each

Вообще, я бы обошёлся здесь без контейнера "Б", проще всё в "А" хранить, а вычисления производить непосредственно при получении новых данных.
вот теперь я вообще запуталась
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
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
myaho
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
02.06.2011, 22:47  [ТС] #7
Цитата Сообщение от Nick Alte Посмотреть сообщение
сравниваем с некоторым пороговым значением, которое задаём из общих соображений.
вот, на счет порогового значения: как его вычислить? и на сколько полученное значение должно быть больше?
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
02.06.2011, 22:51 #8
Цитата Сообщение от myaho Посмотреть сообщение
вот, на счет порогового значения: как его вычислить?
Просто задаёшь из общих соображений. Например, уславливаешься, что изменение больше, чем на 10 м/с для корабля подозрительно.

Цитата Сообщение от myaho Посмотреть сообщение
и на сколько полученное значение должно быть больше?
Просто больше. Хотя бы даже и на одну мильённую. Можешь даже два порога ввести, если хочешь усложнить: скажем, >2 м/с - подозрительно, >10 м/с заведомо неверно.
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
02.06.2011, 23:12 #9
Цитата Сообщение от myaho Посмотреть сообщение
в каждый момент времени
Это означает через равные, заданные промежутки?

Цитата Сообщение от myaho Посмотреть сообщение
данные о своей скорости и направлении и свои координаты
Пример данных в студию.
0
myaho
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
02.06.2011, 23:18  [ТС] #10
Да, промежутки равные. Например, 10 секунд, 20 секунд.

Пример данных: 10 м/c, х=10м, y=20м, направление положительное
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
02.06.2011, 23:31 #11
Положительное направление!? Это как?!
-- В положительном направлении от нас находится Смольный Собор.
-- Булочная находится от вас в положительном направлении.
-- Знаете, пройдите 10м в положительном направлении, потом сверните на отритцательное.
0
myaho
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
02.06.2011, 23:50  [ТС] #12
К примеру: корабль был в точке А с координатой (2,3), а доплыл до точки В с координатой (-9,2).
А вот булочной в положительном направлении от меня нет=(
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
03.06.2011, 00:53 #13
Оу-кей. Четыре вопроса на засыпку.
Корабль из А(0, 0) приплыл в Б(1, 1). В каком направлении он плыл?
Корабль из А(0, 0) приплыл в Б(-1, 1). В каком направлении он плыл?
Корабль из А(0, 0) приплыл в Б(1, -1). В каком направлении он плыл?
Корабль из А(0, 0) приплыл в Б(-1, -1). В каком направлении он плыл?
0
myaho
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 11
03.06.2011, 09:36  [ТС] #14
Цитата Сообщение от lemegeton Посмотреть сообщение
Оу-кей. Четыре вопроса на засыпку.
Корабль из А(0, 0) приплыл в Б(1, 1). В каком направлении он плыл?
Корабль из А(0, 0) приплыл в Б(-1, 1). В каком направлении он плыл?
Корабль из А(0, 0) приплыл в Б(1, -1). В каком направлении он плыл?
Корабль из А(0, 0) приплыл в Б(-1, -1). В каком направлении он плыл?
Поговорила с препододом. Он объяснил так и так:
1. Направление - это угол поворота вектора скорости. Т.е. если скорость 20метров в секунду, а направление 45 градусов, то каждую секунду координаты по оси X и Y должны увеличиваться на 14 с небольшим метров (10 sqrt(2) ).

2. Мы говорим о согласованности, если изменение координат соответствует скорости. Если была скорость 20 метров в секунду и угол поворота 0, а обе координаты уменьшились - ясно, что данные не согласованы.
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,956
Записей в блоге: 17
03.06.2011, 16:07 #15
Один контейнер для хранения всех элементов.
Второй для последних элементов для каждого корабля по которым будет проверятся на согласование новый добовляемый эл-т.
0
03.06.2011, 16:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2011, 16:07
Привет! Вот еще темы с ответами:

Контейнеры STL - C++
Кто знает где найти информацию по поводу стандартных контейнеров STL? Интересует не то, как их применять, а основы реализации. Может быть...

Кодирующие контейнеры? - C++
Существуют ли контейнеры, которые позволяют хранить N элементов за memory<O(N)? Именно на ходу. Скорость не так важна.

контейнеры (литература) - C++
На сегодняшний момент меня заинтересовали контейнеры) Может кто-то подсказать какую-то литературу по ним? В интернете искал, но ничего...

ООП и контейнеры - C++
Здорова господа! От есть задачка: Напишите класс, производный от Container так, чтобы Vector из параграфа 16.2.1 мог использоваться в...


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

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

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