Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Вниз

Работа с массивами   Найти похожие ветки 

 
Soi   (2003-11-14 06:57) [0]

Такой вопрос. У меня есть массив q: array[1..50] of integer, этот массив я наполняю числами в случайном порядке в диапазоне от 1 до 50. Так вот, как после наполнения этого массива из него удалить элемент который содержит например цифру 1? Если можно, то привелите пожалуйста примерчик. Очень надо. Заранее благодарен.


 
Maxud   (2003-11-14 07:08) [1]

Используй динамический массив или список.


 
Soi   (2003-11-14 07:19) [2]

У меня уже прога почти сделана с использованием этого массива, переделовать в облом. Просто возникла не предвиденная ситуация, поэтому и спрашиваю как это сделать.


 
Maxud   (2003-11-14 07:27) [3]

Если бы в статических массивах была возможность вставки или удаления элементов, то никто не стал бы изобретать списки и т.д.
Подумай над
> Maxud © (14.11.03 07:08) [1]


 
Владислав   (2003-11-14 09:19) [4]

Ну вот тебе две процедурки. Только чего ты будешь делать с последним элементом?.. Размер массива то не меняется. Просто сдвигаются эго элементы.

procedure InsertIntoArray(const ArrayPointer: Pointer;
const ArraySize, ElementSize: Integer;
const AValue: Pointer; const AIndex, ACount: Integer);
var
InsertPoint: Pointer;
InsertingByteCount: Cardinal;
MovingByteCount: Cardinal;
begin
InsertingByteCount := Cardinal(ACount) * Cardinal(ElementSize);
InsertPoint :=
Pointer(Cardinal(ArrayPointer) + Cardinal(AIndex) * Cardinal(ElementSize));
MovingByteCount := Cardinal(ArraySize - AIndex - 1) * Cardinal(ElementSize);
Move(InsertPoint^, Pointer(Cardinal(InsertPoint) + InsertingByteCount)^,
MovingByteCount);
Move(AValue^, InsertPoint^, InsertingByteCount);
end;

procedure RemoveFromArray(const ArrayPointer: Pointer;
const ArraySize, ElementSize: Integer;
const AIndex, ACount: Integer);
var
RemovePoint: Pointer;
RemovingByteCount: Cardinal;
MovingByteCount: Cardinal;
begin
RemovingByteCount := Cardinal(ACount) * Cardinal(ElementSize);
RemovePoint :=
Pointer(Cardinal(ArrayPointer) + Cardinal(AIndex) * Cardinal(ElementSize));
MovingByteCount := Cardinal(ArraySize - AIndex - 1) * Cardinal(ElementSize);
Move(Pointer(Cardinal(RemovePoint) + RemovingByteCount)^, RemovePoint^,
MovingByteCount);
end;


 
Soi   (2003-11-14 10:08) [5]

ДА, теперь я начинаю понимать что последний элемента массива останется в любом случае, ну вот это еще одна проблема :(
Наверное в конечном итоге все равно прийдется воспользоваться dynamic array. В любом случае спасибо за помощь Владислав


 
Anatoly Podgoretsky   (2003-11-14 10:21) [6]

Из массивов нельзя удалять или добавлять строки в середине, для этого сущетвуют списки.


 
Владислав   (2003-11-14 10:46) [7]

> Soi © (14.11.03 10:08) [5]

Если решил делать "как лучше", то уж тогда подумай на счет связаных списков.


 
Erik   (2003-11-14 11:28) [8]

А в чем сложность заменяеш свой q: array[1..50] of integer на
q: array of integer и компиляция пройдет нормально. Незабудь призаполнении SetLength(q, 50); А далее тотже Move только SetLength для уменьшения размера добавь.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
4-79240
Aleksandr
2003-09-26 14:47
2003.11.24
Есть стандартные функции АПИ для диалога со строкой ввода?


1-79028
_sulent
2003-11-12 08:08
2003.11.24
Microsoft excel


4-79223
AKA
2003-09-28 16:24
2003.11.24
Mousewheel


1-78932
OlegL
2003-11-12 10:45
2003.11.24
Ресурс в .exe


4-79246
Vadim S
2003-09-30 17:35
2003.11.24
Какой Exec лучше?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский