Надо элементы, расположенные между min и max переместить в начало массива, с одновременным их удалением. Подскажите пожалуйста, хотя бы алгоритм как их переместить
Hooligan Цитата
с одновременным их удалением
С удалением чего?
mithquessir
8.12.2004 4:09
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.
Не самое рациональное решение, но, вроде, работает. ;)
mithquessir
При прогоне для массива (5,-7,1,2,9,10,4,6) программа должна выдавать только 6 значений - (5,1,2,9,4,6). А что она у тебя выдает?
мне самому такая вот мысль неожиданно пришла:
Код
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;
mithquessir
8.12.2004 18:00
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 Это тебе кто сказал? Ты сам так решил? Прочти условие:
Цитата
Надо элементы, расположенные между min и max переместить в начало массива
Поэтому, пока автор темы не уточнит задание, его делать бессмысленно.
Бродяжник
8.12.2004 19:23
...свою пару копеек...
Задачу понимаю так:
Есть массив (вектор) из 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
Если кто скажет, как, тогда можно предложить и алгоритм.
Бродяжник
Ты мой предыдущий пост читал? Ждем автора. Он лучше знает, как звучало условие... :yes: