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

Вниз

Поиск в массиве -- как???   Найти похожие ветки 

 
cvg   (2004-08-02 15:11) [0]

Мужики, подскажите, pls, subj. Хотя бы в одномерном...


 
MacroDenS ©   (2004-08-02 15:14) [1]

а что ищем? и какого типа массив...
хотя в принципе разницы никакой, просто в цикле проверку делаешь типа:

  if mas[i]=*** then <действие>


 
cvg   (2004-08-02 15:18) [2]

А более человеческого ничего нет??? Вот в Клиппере, как сейчас помню, специальная функция была -- aSeek(<array>,<item)), возвращала номер элемента в массиве...


 
PVOzerski ©   (2004-08-02 15:20) [3]

Ну, если это массив символов, есть функция pos. А если чисел или каких-нибудь структур - см. [1]


 
Думкин ©   (2004-08-02 15:20) [4]

Есть бесчеловечное только.


 
MacroDenS ©   (2004-08-02 15:30) [5]

А ты думаешь в клипере оно как работает???

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


 
cvg   (2004-08-02 15:33) [6]

Ну а тут кто противомозольную функцию написать? А так -- самому придется... :(((


 
Digitman ©   (2004-08-02 15:35) [7]


> тут кто противомозольную функцию написать? А так -- самому
> придется


ха ! "самому придется" ... ты думал - здесь негры ?


 
MetalFan ©   (2004-08-02 15:36) [8]

function AnsiIndexStr(const AText: string; const AValues: array of string): Integer;

Description

AnsiIndexStr returns the 0-offset index of the first string it finds in AValues that matches AText case-sensitively.  If the string specified by AText does not have an exact match in AValues, AnsiIndexStr returns –1.


 
MetalFan ©   (2004-08-02 15:38) [9]

и еще:
function AnsiIndexText(const AText: string; const AValues: array of string): Integer;
и
function AnsiMatchText(const AText: string; const AValues: array of string): Boolean;

надеюсь то? )


 
Рамиль ©   (2004-08-02 15:39) [10]


> Ну а тут кто противомозольную функцию написать? А так --
> самому придется... :(((

одна противомозольная функция 100-1000$ в зависимости от величины мозоли.


 
cvg   (2004-08-02 15:42) [11]

Не, MetalFan, там же ясными английскими буквами накорябано -- string handling routines...


 
MacroDenS ©   (2004-08-02 15:42) [12]

to Рамиль ©
  продления ключа от мозолей каждые 6 месяцев - стоимость от 50$


 
Digitman ©   (2004-08-02 15:46) [13]


> cvg   (02.08.04 15:42) [11]
> там же ясными английскими буквами накорябано


зато в твоем вопросе ни ясными, ни неясными, ни вообще какими-то не "накорябано", КАКОГО типа у тебя эл-ты твоего массива


 
cvg   (2004-08-02 15:48) [14]

Ну, допустим, символьные строки... А что, от этого чтой-то зависит?


 
MacroDenS ©   (2004-08-02 15:50) [15]

типа этого чтоль:

...
var
  mas:array[0..10] of String;


тогда смотри [1]


 
Sandman25 ©   (2004-08-02 15:53) [16]

TStrings.IndexOf :)


 
Sergey Kaminski ©   (2004-08-02 15:53) [17]

В Делфи есть только один _специальный_ (встроенный) тип массива - массив символов (строка).


 
cvg   (2004-08-02 15:55) [18]

Н-да, скучновато тут у вас, господа...


 
MacroDenS ©   (2004-08-02 15:55) [19]

to Sandman25
StringList это конечно хорошо, только там много знать нужно, автор может запутаться...


 
Sergey Kaminski ©   (2004-08-02 15:55) [20]

Sandman25 ©   (02.08.04 15:53) [16]

Сейчас опять начнем спорить - является ли TStrings массивом? :)

А автор ветки будет смотреть, как все тут друг друга режут на куски :)))


 
MacroDenS ©   (2004-08-02 15:57) [21]

Короче, обращаюсь к автору ветки, не ломай мозги!

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


 
cvg   (2004-08-02 15:57) [22]

Ну-ка, ну-ка... Я в принципе TStringList"ом-то пользуюсь. Там-то какой-то завялящий поиск есть?


 
Digitman ©   (2004-08-02 15:58) [23]


> cvg   (02.08.04 15:55) [18]
> Н-да, скучновато тут у вас, господа


ни негров, которые будут за тебя ф-цию писать, ни клоунов, которые тебя веселить будут, здесь ты вряд ли найдешь


 
Sandman25 ©   (2004-08-02 15:58) [24]

[19] MacroDenS ©   (02.08.04 15:55)

Это его проблемы. Я защищаю светлое имя Delphi (произносится с пафосом) :)

[20] Sergey Kaminski ©   (02.08.04 15:55)

Зачем спорить? Массив - это array, TStrings - это class :)


 
Anatoly Podgoretsky ©   (2004-08-02 16:01) [25]

Автор ветки должен приложить максимум усилия к трепу, а не ждать милостей от природы.


 
cvg   (2004-08-02 16:03) [26]

"Работай с массивами так как всегда работали..." Я всегда писал либо aSeek (в Клиппере), либо in_array (в РНР). В Перле вот похуже было...


 
Digitman ©   (2004-08-02 16:08) [27]


> cvg   (02.08.04 16:03) [26]


> Я всегда писал


ты всегда имел дело с простыми типами, вот и "писал"
здесь же, в Делфи, эл-т массива может быть чем угодно, да и сам массив массиву - рознь ... и Борланд не обязан на каждый случай жизни, коих м.б. бесконечное мн-во, предоставлять какому-то cvg отдельную ф-цию


 
MacroDenS ©   (2004-08-02 16:08) [28]


Я всегда писал либо aSeek (в Клиппере), либо in_array (в РНР). В Перле вот похуже было...

уууу как здесь все запущено.......

тут придется гораздо сложнее, либо ты поймешь как работать с массивами, либо Делфи вля тебя скала с которой ты сорвался насмерть...
А вот как только научишься с массивами работать, так можешь уже и смою функцию на подобе aSeek написать...


 
KSergey ©   (2004-08-02 16:10) [29]

> [23] Digitman ©   (02.08.04 15:58)
> ни клоунов,

Вот с этим-то часто проблем как раз нет, в отличии от первого...


 
cvg   (2004-08-02 16:10) [30]

Дак пишу уже и так... Чай не совсем я чайник медный!


 
Digitman ©   (2004-08-02 16:13) [31]


> KSergey ©   (02.08.04 16:10) [29]
> Вот с этим-то часто проблем как раз нет, в отличии от первого


тык ведь и цирк пока никуда не уезжал !


 
MacroDenS ©   (2004-08-02 16:15) [32]

ну хоть это радует.

Надеюсь с циклами то хоть работать умеешь?

В общем суть такая, если у тебя есть просто переменная типа String? то она уже одномерный массив символов с диапозоном 1..Length(строка)

Массивы могут быть всех (если не ошибаюсь) типов. но это еще не все, можно структурировать и т.д и т.п.

Но все таки основной метод поиска - это цикл, в котором ты прокручиваешь элементы массива
Вот такая азбука


 
cvg   (2004-08-02 16:16) [33]


function aSeek(arr,item):integer;
var i:integer;
begin
Result := -1;
for i := 0 to length(arr) - 1 do
 if arr[i] = item
 then
  begin
   Result := i;
   break;
  end;
end;


 
KSergey ©   (2004-08-02 16:21) [34]

> [33] cvg   (02.08.04 16:16)

Мээ... Это компилится? (мне просто проверять лень)


 
Sandman25 ©   (2004-08-02 16:23) [35]

Лучше так:

for Result := Low(Arr) to High(Arr) do
if arr[Result] = item then
  exit;
Result := -1;


 
cvg   (2004-08-02 16:28) [36]

Если

function aSeek(arr:array of string;item:string):integer;

то компилится. Low? High? У Йенсена и Вирта такого не было, поэтому не в курсе.


 
MacroDenS ©   (2004-08-02 16:36) [37]

вот так постепенно, общими усилиями, ростут от начинающих к более опытным...


 
Sandman25 ©   (2004-08-02 16:38) [38]

[36] cvg   (02.08.04 16:28)

Очень рекомендую поставить слово const перед arr.


 
cvg   (2004-08-02 16:38) [39]

А изменить длину массиса как? Типа как в Клиппере было -- aAdd(<array>,<item>)...


 
Sandman25 ©   (2004-08-02 16:41) [40]

[39] cvg   (02.08.04 16:38)

Завязывайте с аналогиями. Если работаете с Delphi, то придется почитать книги.

PS. Книги не по Clipper :)


 
Dmitriy O. ©   (2004-08-02 16:42) [41]

использовать RXDataMemori Типа загнать туда весь массив а потом
locate


 
MacroDenS ©   (2004-08-02 16:43) [42]

setlength(mas, Count);
НО!
изменить длину массива можно только если массив динамический у тебя как раз такой


 
MacroDenS ©   (2004-08-02 16:45) [43]

да и [40] тоже возьми на вооружение...
Делфи - это не клипер!


 
cvg   (2004-08-02 16:45) [44]

Thanks. Хоть что-то человеческое в сём языке е...


 
MacroDenS ©   (2004-08-02 16:47) [45]

ну тебе хоть помогли, или мысля водится - "а ну его нафиг этот Делфи, вернусь в Клипер"


 
cvg   (2004-08-02 16:52) [46]

Вернулся бы, кабы нормальная и быстрая виндовая версия была...


 
Digitman ©   (2004-08-02 17:16) [47]


> cvg   (02.08.04 16:52) [46]
> Вернулся бы, кабы нормальная и быстрая виндовая версия была


клиппер - это триппер, и назад пути нет
хочешь иметь великолепный универсальный инструмент для создания высокопроизводительных приложений, не только для работы с БД ?
обкладывайся книжками с ног до головы и читай и пробуй, пробуй и читай, читай-и пробуй ... в бесконечном цикле до полного просветления !


 
MacroDenS ©   (2004-08-02 17:18) [48]

... и на ужных страничках закладки делай, пригодится полюбому...
а вообще я считаю, что Дельфи (С++ Builder) самая рульная среда разработки на сегодняшний день.


 
Sandman25 ©   (2004-08-02 17:19) [49]

> в бесконечном цикле до полного просветления !


while true do
 repeat
   ...
 until FullLight;


Жестоко :)


 
VID ©   (2004-08-02 20:18) [50]

Sandman25 ©   (02.08.04 17:19) [49]
предлагаю всё таки использовать в таком цикле
1. sleep(28800000);
2. ProcessMessages ;

:)


 
cvg   (2004-08-03 08:31) [51]

Нет, я не Будда, я другой.... :))


 
Труп Васи Доброго ©   (2004-08-03 08:44) [52]


> function aSeek(arr:array of string;item:string):integer;
>
> то компилится. Low? High? У Йенсена и Вирта такого не было,
> поэтому не в курсе.


Если уж на то пошло, то в своём цикле ты прокинешь первый и последний элементы, надо не с 0, а с 1 цикл делать и до
length(arr), без всяких -1.
Вот если бы ты написал
function aSeek(var arr:array of string;item:string):integer
тогда всё правильно.
Это из своего печального опыта.


 
AZ ©   (2004-08-03 08:54) [53]

Есть хорошая статья Е.Филипповой на www.delphikingdom.com об алгоритмах поиска с анализом времени.


 
Яод   (2004-08-03 09:36) [54]

потом последует вопрос:
А поиск в массиве быстро - это как?
Задумайся заранее )



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

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

Наверх




Память: 0.57 MB
Время: 0.037 c
11-1079329884
Ал
2004-03-15 08:51
2004.08.22
KOLRichEdit


14-1091319962
parovoZZ
2004-08-01 04:26
2004.08.22
photoshop


9-1083856438
Маг Гыр
2004-05-06 19:13
2004.08.22
Несколько вопросов по DirectX ?


1-1091688013
serg128
2004-08-05 10:40
2004.08.22
Как скопировать в буфер всю строку из Grid?


3-1090826570
Valeri
2004-07-26 11:22
2004.08.22
ADOQuery





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский