Форум: "Основная";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];
ВнизДинамические массивы Найти похожие ветки
← →
Soi (2003-11-17 07:03) [0]Я уже задовал ранее подобный вопрос, но это было связанно со статическими массивами, теперь вот вопрос такой. Как удалить элемент (например содержащий цифру 1) из динамического массива. У меня массив q_mix:array of shortint; набитый числами (отсортированными в случайном порядке) и в диапазоне [1..50]? Если можно, то приведите пожалуйста примерчик.
← →
ЮЮ (2003-11-17 07:18) [1]1)
а) найти
б) "сдвинуть" информацию в памяти
в) уменьшить длину масства
г) повторить а)
2)
а) создать новый массив
б) добавить в него только необходимые элементы первого
← →
Soi (2003-11-17 07:23) [2]А примерчик всего этого можно привести, у меня голова уже и так забита, я сам долго буду соображать.
← →
Palladin (2003-11-17 07:33) [3]Запакуй и еще много влезет.
← →
Спрашивающий_ (2003-11-17 09:13) [4]А что тут соображать пример 2х минут
procedure TForm1.Button1Click(Sender: TObject);
const
Count=10000;
var
M,M1:array of Integer;
I,J:SmallInt;
begin
SetLength(M,Count);
SetLength(M1,Length(M));
Memo1.Lines.BeginUpdate;
Memo2.Lines.BeginUpdate;
J:=0;
For I:=0 To Length(M)-1 Do
begin
M[I]:=Random(3);
If M[I]<>1 Then
begin
M1[J]:=M[I];
M[J]:=M1[J];
Memo2.Lines.Add(IntToStr(M[J]));
Inc(J);
end;
Memo1.Lines.Add(IntToStr(M[I]));
end;
SetLength(M,J);
Memo1.Lines.EndUpdate;
Memo2.Lines.EndUpdate;
end;
← →
Anatoly Podgoretsky (2003-11-17 09:15) [5]Palladin © (17.11.03 07:33) [3]
Нафиг паковать разную грязь, надо просто удалить не нужное.
← →
TUser (2003-11-17 09:15) [6]for i:=0 to length(ar)-1 do
if ar[i]="то, шо надо" then begin
for j:=i to length(ar)-2 do
ar[j]:=ar[j+1];
setLength(ar,length(ar)-1);
// или просто move
end;
← →
Danilka (2003-11-17 09:25) [7]>отсортированными в случайном порядке
хм, что-то новое, я привык - либо отсортированое, либо случайный порядок :))
[6] TUser © (17.11.03 09:15)
согласен, тормознее врядли можно придумать. :))
← →
Radionov Alexey (2003-11-17 09:26) [8]>TUser © (17.11.03 09:15) [6]
Квадратичная сложность здесь ни к чему (я имею в виду вложенный цикл по переносу хвоста, пусть он даже и через move).
l := 0;
for k := 0 to Length(Arr)-1 do
if Arr[k]<>1 then
begin
Arr[l] := Arr[k];
inc(l);
end;
SetLength(Arr,l);
← →
Anatoly Podgoretsky (2003-11-17 09:32) [9]Сортировка может быть по любому закону, в том числе и случайная. Сортировка состоит в смене порядка, что здесь имеет место быть. Наглядный случай колода карт. Из колоды надо убрать карту с номером 1.
← →
Danilka (2003-11-17 09:40) [10][9] Anatoly Podgoretsky © (17.11.03 09:32)
понятно, про сортировку карт я как-то забыл, давно не играл. :))
← →
Anatoly Podgoretsky (2003-11-17 09:46) [11]Я не уверен про карты, я защищал само понятие сортировка.
← →
Владислав (2003-11-17 10:01) [12]Ну тебе же уже много советов дали в предыдущей твоей ветке? Зачем тот же самый вопрос задавать второй раз? Открой ту ветку и прочитай ответы.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c