Сортировка ненулевых элементов. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Сортировка ненулевых элементов. |
Dexoid |
Сообщение
#1
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: 0 |
Такая вот задачка вроде простенькая а что то не выходит совсем. Нужно отсортировать ненулевые элементы в массиве по убыванию. То есть если у нас есть массив: 5 4 4 6 2 4 1 2 0 0 0 2 3 6 1 , то программа должна отсортировать отдельно элементы стоящие до нулей и после, оставив нули на своём месте. (6 5 4 4 4 2 1 0 0 0 6 3 2 1 ) , вся проблема для меня найтиномера этих нулевых элементов, чтоб начать сортировку следующей части массива с нужного символа. Может быть можно ещё как нибудь сделать? Прошу помощи.
|
Tan |
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: 10 |
Методы сортировок - ознакомься, по идее должно пролить свет.
-------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
Dexoid |
Сообщение
#3
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: 0 |
Код Const n = 8; Type TType = Integer; arrType = Array[1 .. n] Of TType; Const a: arrType = (57, 55, 0, 0, 94, 18, 6, 67); var i:integer; Procedure Insert(Var source, sorted: arrType); Var i, j,l: Integer; x: TType; label bash; Begin move(source, sorted, SizeOf(arrType)); l:=1; bash: For i := l To n do Begin x := sorted[i]; j := Pred(i); if x=0 then begin l:=l+1;goto bash;end; While x < sorted[j] Do Begin sorted[Succ(j)] := sorted[j]; Dec(j); End; sorted[Succ(j)] := x; End; for i:=1 to n do writeln(sorted[i]); End; Var b: arrType; Begin Insert(a, b); End. На большее меня не хватает)) а искуственные выходы из циклов не люблю. А по другому не знаю как. Так то вроде работает. |
klem4 |
Сообщение
#4
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
ты результаты своей программы видел ? поставь первой строчкой {$R+}
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
Сообщение
#5
|
Гость |
Dexoid, а ты точно правильно интерпретировал условие? Вполне могло быть и так:
исходный массив: <5 4 4 6 2 4 1 2 0 0 0 2 3 6 1> результат: <6 6 5 4 4 4 3 2 0 0 0 2 2 1 1> (то есть, нули-то остались на местах, а все остальные элементы не обращая внимания на нулевые отсортировали по невозрастанию). |
Текстовая версия | 26.04.2024 5:07 |