Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.27;
Скачать: CL | DM;

Вниз

Динамические массивы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-89986
Olga_Oo
2003-11-17 10:59
2003.11.27
Label


3-89688
pool
2003-11-06 13:15
2003.11.27
sql server


6-90030
Yrasikombo
2003-09-29 14:56
2003.11.27
Как определить все IP адреса включенных компов в локальной сети.


1-89886
igit
2003-11-15 15:04
2003.11.27
спрятать курсор мыши?


14-90089
flip
2003-11-04 18:43
2003.11.27
Srochno