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

Контейнер с направлениями

16.05.2016, 19:55. Показов 969. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Речь о следующем - пусть есть множество векторов (3 числа Double).
Надо добавлять в контейнер только вектора одного направления, то есть (1, 2, 1) и (-1, -2, -1) считаются имеющими тождественное направление - грубо говоря, определяют одну и ту же прямую. И поэтому надо добавить только один из них (любой).
Какую структуру для этого лучше всего использовать?
Возможно, придется это реализовывать не точно, с с учетом погрешности так идет речь о Double.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2016, 19:55
Ответы с готовыми решениями:

Как продвигать сайт с разными направлениями
Здравствуйте, форумчане! есть сайт http://9052005.ru у него три направления деятельности:...

Заменить контейнер vector, использовавшийся для хранения текстовых строк (листинг 2.3), на контейнер list
Здравствуйте форумчане, может кто объяснить как делать это задание и что собственно мы тут вообще...

Определить угол α между направлениями скоростей шаров после удара
Движущийся шар налетает на покоящийся шар такой же массы. Удар абсолютно упругий, но не...

Вычислить работу А по формуле: A=FScos(a), где F –сила, S- перемещение, a-угол между направлениями силы и перемещения
Вычислить работа А по формуле: A=FScos(a), где F –сила, S- перемещение, a-угол между направлениями...

8
Заблокирован
16.05.2016, 20:21 2
Ну во-первых 3 числа это три координаты точки, (x, y, z) или что? Если да, то надо нарисовать чертеж, расказать народу куда указывает какой вектор. Ну а вообще подходит вот такая структура:
C++
1
2
3
4
struct P3{
double x, y, z;}
 
P3 Massiv[100];
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
16.05.2016, 20:25 3
Обычную структуру struct и хранить в std::unordered_set.
1
0 / 0 / 1
Регистрация: 05.03.2014
Сообщений: 94
17.05.2016, 10:50  [ТС] 4
А можно прокомментировать чуть-чуть почему именно unordered_set, а например не map?
И можно ли будет встроить приближенную проверку, т.е. вектора считаются одного направления, если
А) модуль разности их компонент не превышает какого-то маленького числа (например, 10e-5).
либо
Б) модуль суммы их компонент не превышает какого-то маленького числа (если один вектор умножить на -1, то как раз разность превращается в сумму)
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.05.2016, 16:07 5
Ну тебе же не всё нужно хранить. Определишь операцию == для структуры, чтобы вычислять тождественность.
1
0 / 0 / 1
Регистрация: 05.03.2014
Сообщений: 94
17.05.2016, 16:27  [ТС] 6
Ну тебе же не всё нужно хранить. Определишь операцию == для структуры, чтобы вычислять тождественность.
ОК. А можно какой-нибудь простой пример, чтобы понять как это делается?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.05.2016, 16:40 7
Лучший ответ Сообщение было отмечено FortranDLL как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
struct Vector
{
    int x, y, z;
 
    bool operator == (const Vector & r)
    {
        // Здесь пишешь алгоритм, по которому у тебя тождественность определяется для (x, y, z) и (r.x, r.y, r.z).
        // Если тождественны возвратить true, иначе false
    }
};
 
std::unordered_set<Vector> us;
1
0 / 0 / 1
Регистрация: 05.03.2014
Сообщений: 94
18.05.2016, 10:16  [ТС] 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
//g++  4.9.3
 
#include <iostream>
#include <unordered_set>
 
int main()
{     
    struct Vector
{
    int x;
 
    bool operator == (const Vector & r)
    {
        if (x*r.x < 1)
            return 1;
        else
            return 0;
    }
};
 
std::unordered_set<Vector> us;
std::cout << "Hello, world!\n";
    
}
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.05.2016, 13:17 9
Да, там хэш-функция ещё нужна. Возьми vector.
C++
1
2
3
4
5
std::vector<Vector> vs;
 
Vector v;
 
if (std::find(vs.begin(), vs.end(), v) == vs.end()) vs.push_back(v);
0
18.05.2016, 13:17
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2016, 13:17
Помогаю со студенческими работами здесь

контейнер
Создать контейнер, в который можно добавлять и удалять методы. Размер контейнера должен...

Из БД в контейнер
Приветствую!! Пишу программу парсер, выгружаю данные из БД. Подскажите, пожалуйста, наилучший...

Контейнер
Необходимо реализовать контейнер... с формой. Не знаю даже с чего начать, ну тоесть как описать...

Контейнер
Здравствуйте, вопрос таков. Как можно сделать так что бы контейнер который имеет position:...

Контейнер
Привет. Я Си знаю не очень хорошо. Хочу, чтобы помогли разобраться с заданием, понять его. Дана...

Контейнер в контейнере
Необходимо реализовать хранилище данных. Бинарное дерево, в каждом элементе которого стек. Для...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru