Форум: "Начинающим";
Текущий архив: 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]
> может у кого-то есть готовый набросок?..
готовый набросок иф-aif
готовый набросок плюса+
← →
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.005 c