Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.12;
Скачать: CL | DM;

Вниз

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

 
антон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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
9-1149382435
N.
2006-06-04 04:53
2009.04.12
Asphyre


15-1234284263
AlexDan
2009-02-10 19:44
2009.04.12
Очень нужна обкатка проекта.


15-1234454770
Kerk
2009-02-12 19:06
2009.04.12
Долгосрочный научно-технологический прогноз Российской Федерации


2-1235307554
Sfinx
2009-02-22 15:59
2009.04.12
Как свернуть программу в трей при запуске?


2-1235523225
Abcdef123
2009-02-25 03:53
2009.04.12
Почему не работает функция StrToBool?