![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подсчёт совпадений в массиве [D6, Win95/98]
AL2002 © (2002-08-08 16:21:00)Как поизящнее подсчитать, сколько раз повторяется значение Arr[0] в массиве Arr[1..99999] of String;
Skier (2002-08-08 17:37:00) [21]>AL2002
Ты всех запутал...:)
> Т.е. должен быть ещё один массив
Ты хотел сказать цикл ?
AL2002 (2002-08-08 17:33:00) [22]Да. Нужно узнать количество повторений каждого элемента масства. Т.е. должен быть ещё один массив.
Leran2002 (2002-08-08 17:27:00) [23]
> Jeer © (08.08.02 17:26)
Не я точно парюсь, такую мудрилку написал... ;-))
Jeer (2002-08-08 17:26:00) [24]for i:= 1 to N do
if s[1] =lst[i][1] then
if s = lst[i] then Inc(cnt);
Leran2002 (2002-08-08 17:24:00) [25]
> Jeer © (08.08.02 17:23)
Умно, очень даже умно!!!
Skier (2002-08-08 17:24:00) [26]Shit. Я всё не так понял ! Я то думал что нужно узнать
количество повторений каждого эл-та массива.
А для случая автора конечно же нужен одинцикл.
Устал...Пора спать... :)
Jeer (2002-08-08 17:23:00) [27]Если пользоваться только массивом, то можно делать быструю проверку по первому символу, при совпадении полностью проверять.
Leran2002 (2002-08-08 17:20:00) [28]Но если циклом то только одним и не больше, вот мой вариант:
var
Kol:integer;
begin
kol:=0;
for i:=1 to 99999 do
if (Pos(Arr[0],Arr[i])=1)and(Length(Arr[0])=Length(Arr[i])) then inc(kol);
ShowMessage(IntToStr(Kol));
AL2002 (2002-08-08 17:18:00) [29]>И как тебе надо сравнить строку со строкой, или еще надо искать
>подстроки???
Нет, только значения.
Ну ладно. Циклом так циклом.
Всем спасибо.
Leran2002 (2002-08-08 17:05:00) [30]
> AL2002 © (08.08.02 17:00)
Типа удобнее ведь элемента Arr[0] нет в массиве (тебяж Delph обматерит)???
И как тебе надо сравнить строку со строкой, или еще надо искать подстроки???
AL2002 (2002-08-08 17:00:00) [31]>А почему Arr[0] а массив Arr[1..99999] of String;
А мне так удобнее.
Leran2002 (2002-08-08 16:55:00) [32]А почему Arr[0] а массив Arr[1..99999] of String;
Навер так должно быть: Arr[0..99999] of String;
AL2002 (2002-08-08 16:55:00) [33]>А зачем второй цикл?
Каждый элемент нужно проверить.
Skier (2002-08-08 16:53:00) [34]>kull
> А посравнению с числом 99999, об этой памяти вообще можно
> забыть.
Да это-то конечно, я говорю чисто про алгоритм...
>Anatoly Podgoretsky
Слушаю твой вариант...
Anatoly Podgoretsky (2002-08-08 16:50:00) [35]Skier © (08.08.02 16:23)
А зачем второй цикл?
kull (2002-08-08 16:49:00) [36]
> Да и потом TList память будет кушать...
Где он ее буде кушать?
А посравнению с числом 99999, об этой памяти вообще можно забыть.
Skier (2002-08-08 16:46:00) [37]>Странный Прохожий
> Так быстрее.
Нужно ведь вычислять эту самую ksm - а это время, так что я бы
не сказал что будет так уж сильно быстрее.
Да и потом TList память будет кушать...
Ну в общем можно прикинуть что важнее быстрота или
съедаемая память...
AL2002 (2002-08-08 16:41:00) [38]>Skier
Ну, если на ассемблерных кодах и ещё как-то...
>Странный Прохожий
А вот это уже ИДЕЯ.
Странный Прохожий (2002-08-08 16:39:00) [39]Можно вести параллельный список (TList), в котором запоминаются контрольные суммы строк.
При поиске строки сначала проверяется ksm, если совпала -- проверяется сама строка.
Так быстрее.
Skier (2002-08-08 16:35:00) [40]>AL2002
> Быстрее
Поясни...