Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Массивы


Автор: Алекс С. 4.9.2002, 01:16
Как по значению члена массива узнать его индекс?

Автор: Mikel 4.9.2002, 02:42
Просто просмотреть все элементы от минимального к максимальному и сравнить с твоим числом. Если есть более короткие пути, тогда скажите мне тоже.

Автор: Fantasist 4.9.2002, 05:46
Держать элементы упорядоченными, и находить последовательным приближением. Для этого отдельный класс неплохо бы сделать.

Автор: Dapo 4.9.2002, 15:50
В массиве может быть несколько одинаковых элементов.
"...держать элементы упорядоченными..." - в програмировании очень мало моментов, когда массив можно (целесообразно) упорядочивать, как правило => неоднозначное соответствие с другими объектами.

Автор: Dapo 4.9.2002, 15:53
И потом, если интересует именно индекс, то положение элементов вообще трогать нельзя.

Автор: Fantasist 5.9.2002, 02:28
Цитата
В массиве может быть несколько одинаковых элементов.

 Mожет быть, а может и не быть. Если задается такой вопрос, то наверное они там в единственном числе. Иначе надо находить все.
Цитата
"...держать элементы упорядоченными..." - в програмировании очень мало моментов, когда массив можно (целесообразно) упорядочивать, как правило => неоднозначное соответствие с другими объектами.


Универсальных решений нет, но это одно из них и в некоторых ситуациях весьма оправданно.

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

А все равно придется при удалении/вставке. Иначе у тебя будет постоянно растущий  массив. Но это тоже все частности - зависит от ситуации.

Автор: adminlion 5.9.2002, 03:02
Используйте TList или что-то в этом роде

Автор: MэG 12.6.2004, 12:35
sad.gif Как из массива удалить повторяющиеся элементы

Автор: Shishkin 12.6.2004, 12:42
Это делается в двух строках, вот код:

i:=0;
for i:=1 to number_of_elements do if (a=massiv[i]) then index:=i;

тогда переменная index и будет соответствующий индекс или будет равна 0, если нужного элемента в массиве нет.

Автор: youri 12.6.2004, 14:57
Если элементы массива не повторяются, то можно воспользоваться следующим кодом
Код
index:=-1;
for i:=low_index_of_array to high_index_of_array do
if (searched_value=massiv[i]) then
begin
 index:=i;
 break;
end;
// index=-1, если искомый элемент массива не найден,
// в противном случае index содержит индекс искомого элемента массива


Если же элементы массива повторяются, и надо найти все элементы массива с заданным значением
Код
search_from := low_index_of_array
repeat
index:=-1
for i:=search_from to high_index_of_array do
 if (searched_value=massiv[i]) then
 begin
  index:=i;
  break;
 end;
search_from := i+1;
// здесь можно воспользоваться найденным элементом массива (если index<>-1)
until index=-1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)