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

Вниз

Группировка   Найти похожие ветки 

 
антон1243232   (2009-02-26 15:40) [0]

Привет всем.

Подскажите как можно сгруппировать одинаковые строки и показать кол-во совподений.
т.е

есть список:
Вася
Вася
Вася
Петя
Петя

Надо сгруппировать так чтоб было :
Вася(3)
Петя(2)


 
Медвежонок Пятачок ©   (2009-02-26 15:41) [1]

с помошью ифа и плюса


 
антон1243232   (2009-02-26 15:46) [2]

может у кого-то есть готовый набросок?..


 
b@v ©   (2009-02-26 15:48) [3]

SQL запросом можно, я так делал


 
clickmaker ©   (2009-02-26 15:59) [4]

где строки-то находятся?


 
антон1243232   (2009-02-26 16:00) [5]

строки находятся в StringList


 
Palladin ©   (2009-02-26 16:03) [6]

А зачем тебе это нужно?


 
Anatoly Podgoretsky ©   (2009-02-26 16:05) [7]

> Palladin  (26.02.2009 16:03:06)  [6]

Для зачета


 
Сергей М. ©   (2009-02-26 16:10) [8]


> строки находятся в StringList
>


А "сгруппированные" строки в результате где должны оказаться ?


 
Игорь Шевченко ©   (2009-02-26 16:11) [9]


> может у кого-то есть готовый набросок?..


готовый набросок иф-a

if

готовый набросок плюса

+


 
clickmaker ©   (2009-02-26 16:36) [10]

> [5] антон1243232   (26.02.09 16:00)
> строки находятся в StringList

нужен второй стринг лист
цикл, IndexOf, if и +


 
sniknik ©   (2009-02-26 16:41) [11]

> ... IndexOf ...
неудобно, проще сделать sort, и после "цикл if = ...".


 
Сергей М. ©   (2009-02-26 16:41) [12]


> clickmaker ©   (26.02.09 16:36) [10]


Можно и одним обойтись, если не грузить его абы как сломя голову)


 
Anatoly Podgoretsky ©   (2009-02-26 17:01) [13]

> sniknik  (26.02.2009 16:41:11)  [11]

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


 
антон1243232   (2009-02-26 19:23) [14]

по IndexOf понятно я исключаю схожие элементы но как быть с кол-вом совпадений?
s= значение меняется в него поступает то вася то петя то федя

index:=listbox1.items.IndexOf(s);
if index =-1 then
listbox1.items.add(s);

а вот как быть с кол-вом совпадений?
я понимаю что можно использовать

else

У кого какие идеи ??...


 
{RASkov} ©   (2009-02-26 19:46) [15]

> [14] антон1243232   (26.02.09 19:23)
> я понимаю что можно использовать
>
> else

например,
if index < 0 then
listbox1.items.add(s)
else
listnox1.items.objects[index]:=tobject(integer(listbox1.items.objects[index]+1);

В обjectах будет кол-во совпадений....


 
Anatoly Podgoretsky ©   (2009-02-26 19:56) [16]

> антон1243232  (26.02.2009 19:23:14)  [14]

Идея простая, группировка делается простым проходом по списку и сравнением с предыдущим. Никаких IndexOf не требуется.


 
KSergey ©   (2009-02-27 07:35) [17]

> {RASkov} ©   (26.02.09 19:46) [15]
> В обjectах будет кол-во совпадений....

только не забыть тогда до else вставить прописывание единички objects[] для добавляемой строки


 
sco   (2009-02-27 08:18) [18]

for i:=1 to SS1.items.count do
begin
count:=0;
for t:=1 to SS2.items.count do
 if SS2.items.strings[t-1]=SS1.items.strings[i-1] then Inc(count);
SS1.items.srtings[i-1]:=SS1.items.strings[i-1]+"("+IntToStr(count)+")";
end;


 
sco   (2009-02-27 08:22) [19]

аа я неправильно понял товарисча =)
ну тогда так
for i:=1 to SS1.items.count-1 do
begin
count:=0;
t:=i+1;
repeat
 if SS1.items.strings[t-1]=SS1.items.strings[i-1] then begin
  Inc(count);
  Dec(t);
  SS1.items.delete(t-1);    
  SS1.items.srtings[i-1]:=SS1.items.strings[i-1]+"("+IntToStr(count)+")";
 end;
 Inc(t);
until t>SS1.items.count
end;


 
KSergey ©   (2009-02-27 08:29) [20]

> sco   (27.02.09 08:22) [19]
> for i:=1 to SS1.items.count-1 do
...
>   SS1.items.delete(t-1);  

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


 
sco   (2009-02-27 08:57) [21]

ну да тут промашка. сделать не for i:=1 to SS1.items.count-1 do
а
i:=0;
repeat
...
Dec(i);
...

until i>SS1.items.count-1;

Я думаю с етим автор темы и сам бы разобрался =) компилировать всё подряд голова взорвётся =)


 
Palladin ©   (2009-02-27 09:03) [22]

какая же она у тебя маленькая... почитай, кстати, про downto на досуге


 
KSergey ©   (2009-02-27 09:11) [23]

> sco   (27.02.09 08:57) [21]
> Я думаю с етим автор темы и сам бы разобрался =)

выражаю сомнение. Если б мог - исходного выпроса тем более бы не было.



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

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

Наверх





Память: 0.49 MB
Время: 0.006 c
15-1234287680
Маэстро
2009-02-10 20:41
2009.04.12
Сколько это будет стоить?


2-1235073098
LDV
2009-02-19 22:51
2009.04.12
Почему возвращается пустая строка


15-1234181465
desc
2009-02-09 15:11
2009.04.12
Где в Мазиле расположен КЭШ ?


15-1234461166
Кое кто
2009-02-12 20:52
2009.04.12
Можно ли восстановить телефон?


1-1207860252
S7r
2008-04-11 00:44
2009.04.12
События OnEnter и OnExit.





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