![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Redstuff |
|
|||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Отсортировать элементы массива (любым методом) так, чтобы отрицательные эл-ты чередовались с положительными
Подскажите как лучше реализовать данную задачку? С самой сортировкой проблем нет, много готовых алгоритмов, но вот как подступиться к данной задачке не соображу ![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
простейший способ:
сначала разносиш по двум массивам положительные и отрицательные числа. потом оба эти массива сортируеш, потом сливаеш (беря числа по-очереди из первого и из второго массивов)... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
точно ![]() Добавлено через 4 минуты и 18 секунд ну сортировка простейший способ помоему воть
Сортируешь массив "-" и "+" элементов а потом выводишь поочередно ![]() --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
Redstuff |
|
|||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
А обойтись всего одним массивом?
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
можно и одним -- посмотри какой число по модулю самое маленькое/большое (зависит от порядка сортировки) -- положительное или отрицательное и при сортировке ложи отрицательные числа на четные индексы, а положительные на нечетные (или наоборот)
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
если одним то можно через двойной цикл цикл
примерно так ![]() --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
Redstuff |
|
||||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
betal, чото я мысли даже не улавливаю в твоем коде...
_hunter,
интересно как это все сделать в 1 массиве? 1 массив всего, который дан.
Может поможете найти ошибку в функциях? С некоторыми массивами работает почти как надо... |
||||
|
|||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
дай полностью код.
![]() И что тебе вообще нужно вывести поочереди ????? --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
fantast |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
написано под борланд
с учетом что положительных и отрицательных поравну
Это сообщение отредактировал(а) fantast - 16.4.2007, 23:08 --------------------
Эпитафия: Он старался. Неизвестный |
|||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
Или я устал под вечер и туплю или ...
...или это не сортировка --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
fantast |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
--------------------
Эпитафия: Он старался. Неизвестный |
|||
|
||||
powerfox |
|
||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
А с чего все взяли, что сортировать надо по увеличению/уменьшению? В контексте задачи это невозможно. Нужно просто сделать это:
|
||||
|
|||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
а в чем же здесь сортировка ??? ))
Добавлено через 9 минут и 38 секунд уточни плз задание сортировать нуно только "+" и "-" а возрастание, убывание ??? Разность ??? Бо тут у нас некий спор возник ![]() --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
fantast |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
если положительных чисел и отрицацельных будет поровну то прога их и разложет их чередуя и отсортирует
--------------------
Эпитафия: Он старался. Неизвестный |
|||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
![]() Хотелось бы уточнить чего хотять от нас.... ![]() --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
S.A.P. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
я бы сортировал путём подмены стандартного условия. Если это C++, то выглядеть всё будет так:
|
|||
|
||||
fantast |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
это уже наверно не сегодня 8)
--------------------
Эпитафия: Он старался. Неизвестный |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
S.A.P., не факт, что после этого отрицательные и положительные будут чередоваться.
например
|
|||
|
||||
S.A.P. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
zkv, насколько я понял, автору нужна сортировка по абсолютным значениям, в противном случае задача не имеет смысла. Поправьте если не прав.
|
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
S.A.P., возможно вы правильно поняли автора, а я нет. Вообще автора трудно понять. Я решил, что поджножества отрицательных и положительных чисел должны быть сначала упорядочены по отдельности, а потом слиты в один массив, такой вывод можно сделать из рассуждений выше. Зачем понадобилось решать такую задачу? Не знаю, этот вопрос уже не ко мне, возможно какой то смысл в этом есть, не знаю. ![]() |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
В таких случаях аффтар должен приводить пример:
исходный массив: ... такой-то... результат должен быть: ... такой-то... И всё было бы понятно с самого первого поста. ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
Я тоже так понял. Но потом мнение в теме разделились. Да и Афтар кудат пропал.... ![]() --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
Redstuff |
|
|||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Да пример зря чувстую не привел, моя вина
Например дано: 1 2 3 4 -7 100 -8 -11 500 Получить: 1 -11 2 -8 3 -7 4 100 500 Формулировку задачи я переписал в том виде, котором нам дал преподователь. fantast, в задании не указано равное или не равное кол-во, так что не подходит. Тоже ведь массив с отриц. и полож. ) : Дано: 1 2 3 4 -7 100 Рез-ат: 1 -7 2 4 3 100 Это сообщение отредактировал(а) Redstuff - 17.4.2007, 09:50 |
|||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
А я ему уже говорил. Redstuff Ладно значит я правильно понял идею. И то что я выше описывал значит так и есть. Но раз ты не уловил суть е то я щас те попробую рассписать --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
betal |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
Ну смотри у тебя есть уже массив
допустим
осортировали и получили
теперь выбираем елементы первый с начала последниы с конца Где положительные будут прокручиваться i=0;i<n/2;i++ а отрицательные n-i; Воть и вся идея. Это конечно не оптимизированый код нокак вариант --------------------
101100010100001101100001110100101111011легкие деньги |
||||
|
|||||
betal |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
воть примерно что у меня вышло
только у меня не выходил получить доступ к последнему элементу ну думаю это уже не проблема
но если непарное N то выходит такая лажа
Добавлено через 1 минуту и 22 секунды Но повторяю это не оптимизированый код. Но ним я выразил свою мысль... Так что не судите строго --------------------
101100010100001101100001110100101111011легкие деньги |
||||||
|
|||||||
fantast |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
тогда может так, извеняюсь за слабую читабельность кода 8)
Это сообщение отредактировал(а) fantast - 17.4.2007, 12:49 --------------------
Эпитафия: Он старался. Неизвестный |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Идея такая...
Сортировку делать не нужно. Идём по массиву. 1. Ищем минимальный элемент среди оставшихся(если текущий индекс чётный, то только среди положительных). 2. Меняем его местами с текущим элементом. 3. Переходим на следующий элемент. И так до конца массива. Всё.
Это сообщение отредактировал(а) Dov - 17.4.2007, 16:08 -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
Интерестно
а если у меня на setw(4) компелятор ругается ? ![]() --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
упсь ![]()
Насколько я правильно понял задание то опять неувязочка выходит. ![]() --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Не говорите загадками, вы меня изводите. ![]() Добавлено через 5 минут и 6 секунд Извиняюсь, исправил в коде. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
betal |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
Dov да я по поводу сортировки здесь выходит
а должно
а у моя версия делает
от такая загагулина ![]() --------------------
101100010100001101100001110100101111011легкие деньги |
||||||
|
|||||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
betal, у меня всё, как просил афтар. Сортирует по возрастанию.
![]()
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
блин ну принцип тот же просто я отсортировал не по возрастанию а по убыванию. И условие изменить.
Dovвсе прально у тя. То я немного того.. Все проблемы от недопонимания.................. --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
betal, не расстраивайся, бывает и хуже. ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
Не ну как понял так и сделал. Как всегда...
![]() --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
Redstuff |
|
|||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Dov, да работает как надо. Можно только пояснения к коду?
Например непонятно: 1)
Первый раз сталкиваюсь с этими библиотеками. 2) setw(4) - что эта за функция такая? Хотелось бы глянуть ее реализацию, типа того как описана swap() в примере 3) Зачем описывать функцию swap(), она и так вроде реализована. Это сообщение отредактировал(а) Redstuff - 19.4.2007, 11:08 |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
1. Я это делал в VC++6.0, если у тебя работает без этих библиотек, то не подключай. iomanip.h нужен для setw(). В limits.h определена константа INT_MAX.
2. setw() - устанавливает ширину поля при выводе данных. 3. Смотри пункт 1. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Redstuff |
|
|||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Dov, спасибо.
setw() - довольно полезная ф-ия при форматировании текста. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |