Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подсчёт совпадений в массиве [D6, Win95/98]


Страницы:   1 2 3

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


> Быстрее


Поясни...


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо