|
3 / 3 / 4
Регистрация: 03.11.2015
Сообщений: 89
|
||||||
Все повторяющиеся элементы переставить в самое начало05.01.2017, 07:49. Показов 1477. Ответов 25
Метки нет (Все метки)
Все повторяющиеся элементы переставить в самое начало.Вот мой код.Не могу понять почему не правильно работает,вроде бы все должно работать.
0
|
||||||
| 05.01.2017, 07:49 | |
|
Ответы с готовыми решениями:
25
Переставить все отрицательные элементы в начало массива Позиционирование в потоке, переставить все нулевые элементы в начало файла
|
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
| 05.01.2017, 10:08 | |
|
Valuamba, вы пытаетесь произвести запись за пределы массива... в C++ у первого элемента массива нулевой индекс.
1
|
|
|
3 / 3 / 4
Регистрация: 03.11.2015
Сообщений: 89
|
|
| 05.01.2017, 10:49 [ТС] | |
|
я поменял,чтобы программа начинала поиск с 0 индекса,но все равно выводит с не правильной перестановкой.
Спасибо,все получилось,просто кто-то слепой
0
|
|
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
| 05.01.2017, 10:58 | |
|
Valuamba, перепроверьте при k равном скажем 10... у вас еще остались ошибки в логике программы
0
|
|
|
3 / 3 / 4
Регистрация: 03.11.2015
Сообщений: 89
|
||||||
| 05.01.2017, 11:15 [ТС] | ||||||
|
Да,я заметил,если элемент с 0 индексом равен какому-то элементу с другим индексом,то программа начинает не правильно работать и выводить какие-то большие рандомные числа.
Как раз думаю об этом.
0
|
||||||
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
| 05.01.2017, 11:19 | |
|
Valuamba, ... еще раз, индексы массива в С++ начинаются с 0! следовательно индекс последнего элемента будет равен k-1!!!!!
с этим надеюсь разобрались... это пол дела, вторая половина - у вас в логике программы ошибка, переделайте алгоритм
0
|
|
|
3 / 3 / 4
Регистрация: 03.11.2015
Сообщений: 89
|
||||||
| 05.01.2017, 11:23 [ТС] | ||||||
|
Извиняюсь это старый код,я его здесь еще не редактировал.
Вот новый:
0
|
||||||
|
|
||||||
| 05.01.2017, 12:11 | ||||||
0
|
||||||
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|||||||||||
| 05.01.2017, 12:25 | |||||||||||
|
Peoples, это не будет работать... алгоритм std::unique не заботится о сохранности повторяющихся элементов...
Добавлено через 3 минуты Valuamba
0
|
|||||||||||
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
| 05.01.2017, 12:34 | |
|
Peoples либо скрин обрезан, либо одну 10 вы потеряли...
Прочитайте про то как работает алгоритм std::unique На выходе имеем лишнюю 30 и соответственно одна 10 потерялась.
0
|
|
| 05.01.2017, 12:37 | |
|
Не по теме:
0
|
|
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
| 05.01.2017, 12:41 | |
|
Peoples, в любом случаи у вас на скрине выведено только 8 элементов, а в контейнере - 9... но это не главная беда... главная проблем - std::unique превращает повторяющиеся элементы в кашу
2
|
|
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
||||||
| 05.01.2017, 14:21 | ||||||
|
Наверное не самый изящный и эффективный способ, но зато без использования дополнительного контейнера:
0
|
||||||
|
3 / 3 / 4
Регистрация: 03.11.2015
Сообщений: 89
|
|
| 05.01.2017, 20:46 [ТС] | |
|
0
|
|
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
| 05.01.2017, 21:01 | |
|
Valuamba ничего страшного, std::sort - сортировка массива... вам придется написать свою... так как скорость не важна - советую сортировку пузырьком, она самая легкая... код можете найти в этой теме: Алгоритмы сортировок
а на счет size_t - это почти тоже самое, что и unsigned int... если вы замените size_t на unsigned, то абсолютно ничего в вашей программе не испортится) удачи)
0
|
|
|
Модератор
|
|||||||||||||||||||||||||||||||
| 05.01.2017, 21:19 | |||||||||||||||||||||||||||||||
|
Valuamba, дойдите.
Можете вместо size_t написать unsigned int. А вместо
std::sort (см. тут и тут) представляет из себя стандартный библиотечный алгоритм для сортировки заданной последовательности (в Вашем случае - все элементы Вашего массива).В качестве аргументов функции std::sort передаются два итератора (это такие специальные указатели с дополнительными свойствами). Первый итератор указывает на первый элемент последовательности, а второй итератор - на элемент, следующий за последним элементом последовательности. Таким образом, если в Вашем массиве 10 элементов (k = 10), то итератором, указывающим на первый элемент будет либо &A[0] либо просто A, а итератором, указывающим на элемент, следующий за последним элементом последовательности, будет либо &A[10] либо просто A+k.Добавлено через 17 минут Valuamba, вот Вам четыре маленьких примера с сортировкой массива при помощи std::sort:Пример #1
Пример #2
Пример #3
Пример #4
Добавлено через 53 секунды JIawliet, опередили меня )))
1
|
|||||||||||||||||||||||||||||||
|
3 / 3 / 4
Регистрация: 03.11.2015
Сообщений: 89
|
|
| 06.01.2017, 00:52 [ТС] | |
|
Спасибо,постараюсь разобраться.Как я понимаю в моем коде проблема состоит в том,что если элемент массива A[i] == A[j] и его индекс i=0,то он начинает неправильную перестановку?
0
|
|
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
||
| 06.01.2017, 09:02 | ||
|
0
|
||
| 06.01.2017, 09:02 | |
|
Помогаю со студенческими работами здесь
20
Переставить все максимальные элементы списка в его конец, все минимальные в начало Переставить в начало массива все положительные элементы Переставить в массиве все отрицательные элементы в начало массива, сохраняя относительный порядок
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|