IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> линейный массив, переместить элементы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Надо элементы, расположенные между min и max переместить в начало массива, с одновременным их удалением. Подскажите пожалуйста, хотя бы алгоритм как их переместить
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Hooligan
Цитата
с одновременным их удалением

С удалением чего?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.

Не самое рациональное решение, но, вроде, работает. ;)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






mithquessir
При прогоне для массива (5,-7,1,2,9,10,4,6) программа должна выдавать только 6 значений - (5,1,2,9,4,6). А что она у тебя выдает?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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
Если кто скажет, как, тогда можно предложить и алгоритм.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Бродяжник
Ты мой предыдущий пост читал? Ждем автора. Он лучше знает, как звучало условие... :yes:
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.01.2025 22:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name