Задать вопрос

Как отсортировать дробную и целую часть числа в C++?

Помогите пожалуйста. Необходимо решить задачу на С++, дан поток входных данных, представленных в виде рациональных чисел, нужно отсортировать эти числа в порядке неубывания целой части, и в порядке убывания дробной. т.е при входных данных : 2,3; 2; 2,4; 5,2; 5,1; 7,9; 6; . Oтвет должен быть 2,4; 2,3; 2; 5,2; 5,1; 6; 7,9;
  • Вопрос задан
  • 450 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
@res2001
Developer, ex-admin
Целую часть можно получить с помощью floor(v)
Дробную: (v - floor(v))
Для сортировки используйте стандартный sort.

Кстати, отсортировать вы можете массив (он у вас уже есть в памяти), когда говорят про поток, то это нечто потенциально бесконечное, порции данных из потока вы получаете частями и обрабатываете их.
Соответственно, если у вас действительно поток, то надо строить из его данных дерево. Для этого можно использовать стандартный map. Данные будут укладываться в дерево по мере поступления с одновременной сортировкой. Получить из дерева отсортированный список можно просто обходом дерева с помощью итератора.
Данные в дереве сортируются по ключу. Для ключа можно использовать примерно такую конструкцию: floor(v) + (1 - (v - floor(v)))
Ответ написан
@calculator212
Нужно писать свой алгоритм сортировки или можно юзать алгоритмы из std? В целом алгоритм такой пишите функцию сравнения и передаете ее в функцию сортировки, получаете результат.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы