линейный массив, переместить элементы |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
линейный массив, переместить элементы |
Hooligan |
Сообщение
#1
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: 0 |
Надо элементы, расположенные между min и max переместить в начало массива, с одновременным их удалением. Подскажите пожалуйста, хотя бы алгоритм как их переместить
|
volvo |
Сообщение
#2
|
Гость |
Hooligan
Цитата с одновременным их удалением С удалением чего? |
mithquessir |
Сообщение
#3
|
Гость |
volvo
Цитата С удалением чего? Наверное, элементов из (min,max). Hooligan Если так, то Код const n = 8; a:array[1..n] of integer = (5,-7,1,2,9,10,4,6); var min,max,min_,max_,i,k,x,m,f:integer; begin min := a[1]; min_ := 1; max := a[1]; max_ := 1; for i := 2 to n do begin if a[i] < min then begin min_ := i; min := a[i]; end; if a[i] > max then begin max_ := i; max := a[i]; end; end; for i := 1 to max_ - min_ -1 do begin x := a[min_+1]; for k := min_+1 to max_-1{min_} do begin a[k] := a[k+1]; end; for f := max_-1 to n do a[f] := a[f+1]; inc(min_); for m := n downto 2 do a[m] := a[m-1]; a[1] := x; end; for i := 1 to n do WriteLn(a[i]:3); end. Не самое рациональное решение, но, вроде, работает. ;) |
volvo |
Сообщение
#4
|
Гость |
mithquessir
При прогоне для массива (5,-7,1,2,9,10,4,6) программа должна выдавать только 6 значений - (5,1,2,9,4,6). А что она у тебя выдает? |
Hooligan |
Сообщение
#5
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: 0 |
мне самому такая вот мысль неожиданно пришла:
Код if min_index<max_index then while min_index<>max_index-1 do begin m:=a[i]; a[i]:=a[min_index+1]; a[min_index+1]:=m; i:=i+1; min_index:=min_index+1; end else while max_index<>min_index-1 do begin m:=a[i]; a[i]:=a[max_index+1]; a[max_index+1]:=m; i:=i+1; max_index:=max_index+1; end; Сообщение отредактировано: volvo - |
mithquessir |
Сообщение
#6
|
Гость |
volvo
Цитата При прогоне для массива (5,-7,1,2,9,10,4,6) программа должна выдавать только 6 значений - (5,1,2,9,4,6). А что она у тебя выдает? Выдает 9,2,1,5,-7,10,4,6. Цитата Надо элементы, расположенные между min и max переместить в начало массива, с одновременным их удалением. Ты не прав, нужно удалять не min,max элементы, а элементы между ними. Сообщение отредактировано: mithquessir - |
volvo |
Сообщение
#7
|
Гость |
mithquessir
Это тебе кто сказал? Ты сам так решил? Прочти условие: Цитата Надо элементы, расположенные между min и max переместить в начало массива Поэтому, пока автор темы не уточнит задание, его делать бессмысленно. |
Бродяжник |
Сообщение
#8
|
Бывалый Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: 3 |
...свою пару копеек...
Задачу понимаю так: Есть массив (вектор) из N чисел. Среди этих чисел есть а) наименьшее, и б) наибольшее. В общем случае они находятся не рядышком, т.е. между ними есть другие числа. И вот эти-то другие числа надо перенести с того места, где они сейчас, в начало массива, сдвинув начальные элементы на освободившееся место. Пример: Было: 4,3,2,1,0,1,2,3,100,99,98 Стало: 1,2,3,4,3,2,1,0,100,99,98 Тройку чисел 1,2,3 сместили в начало массива. Так? Если так, тогда рассмотрим "подводные камни". Кто скажет, как должна работать программа в следующих случаях: а) 2,2,2,2,2,2,2,2,2 б) 1,2,3,1,2,3,1,2,3 в) 0,0,0,1,2,3,9,9,9 Если кто скажет, как, тогда можно предложить и алгоритм. |
volvo |
Сообщение
#9
|
Гость |
Бродяжник
Ты мой предыдущий пост читал? Ждем автора. Он лучше знает, как звучало условие... :yes: |
Текстовая версия | 11.01.2025 22:55 |