![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Help!!! listBox найти max кол. повторяющихся элементов
Roman_ln © (2006-12-08 11:30:00)Может алгорим какой есть(список сортирован)
Elen (2006-12-08 12:03:00) [21]
> Удружила.
Гм. Гм. Значит вот еще версия ;) (Хи-Хи)
procedure TForm1.FormCreate(Sender: TObject);
var k,i:integer;
begin
i:=0; k:=1;
while i<ListBox1.Count do begin
if (i=ListBox1.Count-1) then ListBox2.Items.Append(ListBox1.Items[i]+' Кол-во '+inttostr(k))
else
if (ListBox1.Items[i]<>ListBox1.Items[i+1])
then begin
ListBox2.Items.Append(ListBox1.Items[i]+' Кол-во '+inttostr(k));
k:=0;
end;
inc(i); inc(k);
end;
end;
Jeer (2006-12-08 12:02:00) [22]
> Только там с последним элементом могут быть проблемы...
Удружила.
Anatoly Podgoretsky (2006-12-08 12:01:00) [23]> Jeer (08.12.2006 11:55:11) [11]
Это не беда, а вот что в программирование рванулся некоторый контингент, это точно беда.
Elen (2006-12-08 12:00:00) [24]
> Roman_ln
Ой пардон не то кидаю :
procedure TForm1.FormCreate(Sender: TObject);
var k,i:integer;
begin
i:=0; k:=1; //ListBox2.Items.Append('');
while i<ListBox1.Count do begin
if (i=ListBox1.Count-1) then ListBox2.Items.Append(ListBox1.Items[i])
else
if (ListBox1.Items[i]<>ListBox1.Items[i+1])
then begin
ListBox2.Items.Append(ListBox1.Items[i]+' '+inttostr(k));
k:=0;
end;
inc(i); inc(k);
end;
end;
Во втором Листе будут Числа и колво их повторения. Только там с последним элементом могут быть проблемы...
Anatoly Podgoretsky (2006-12-08 12:00:00) [25]> Roman_ln (08.12.2006 11:54:09) [9]
Это просто, синтаксис создания массива описан в справке, как для статических, так и динамических массивов. Но я не могу понять как можно программировать без массивов?
Elen (2006-12-08 11:57:00) [26]
> Elen поможеш с меня шоколадка :0)
Лови горечко :
В одном ЛистБоксе исходные данные, для них выставь Sorted
Dj второй листбокс отбираются все но без повторов
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
i:=0; //ListBox2.Items.Append('');
while i<ListBox1.Count do begin
if (i=ListBox1.Count-1) then ListBox2.Items.Append(ListBox1.Items[i])
else
if (ListBox1.Items[i]<>ListBox1.Items[i+1])
then ListBox2.Items.Append(ListBox1.Items[i]);
inc(i);
end;
end;
Пойдет?
Jeer (2006-12-08 11:55:00) [27]
> надо ещё массив создать
Это точно беда.
Roman_ln (2006-12-08 11:54:00) [28]Анатолий чтоб сделать max надо ещё массив создать
Roman_ln (2006-12-08 11:54:00) [29]Анатолий чтоб сделать max надо ещё массив создать
Anatoly Podgoretsky (2006-12-08 11:53:00) [30]> Roman_ln (08.12.2006 11:45:04) [4]
А массив заносится просто
Ar[Index] := Value;
Anatoly Podgoretsky (2006-12-08 11:52:00) [31]> Roman_ln (08.12.2006 11:38:02) [2]
О теперь появилась функция MAX, ну так реализация входит в понятие третьего класса школы.
Jeer (2006-12-08 11:52:00) [32]
> Roman_ln © (08.12.06 11:48) [5]
Замени петь, вась, вань на рубли, доллары, теньга, фунты, флорины (можно золотые), а для получения сделанного для тебя решения - ссыпь в мой карман.
Roman_ln (2006-12-08 11:48:00) [33]т.е. если
петя
ваня
ваня
ваня
петя
коля
то итог:
петя - 2
ваня - 3
коля - 1
Elen поможеш с меня шоколадка :0)
Roman_ln (2006-12-08 11:45:00) [34]Elen :
for i:=0 to ListBox2.Count-2 do begin
if ListBox2.Items[i]=ListBox2.Items[i+1] then begin
j:=j+1;
end;
end;
edit2.Text:=IntToStr(j);
как занести в массив элемент и кол. повторений???
вот в чём вопрос:)
Elen (2006-12-08 11:42:00) [35]
> Roman_ln
Поставь в лист боксе сортировку по алфавиту, потом в одном цикле считай кол--во повторов
Roman_ln (2006-12-08 11:38:00) [36]Нет.
Мне нужно определить из всего списка макс. повторяющихся
т.е.
петя
ваня
ваня
ваня
петя
коля
Итог ваня-3 раза
Если делать тупым сравнением и занасить в массив то при большой массиве "тормаз" обеспечен
Anatoly Podgoretsky (2006-12-08 11:34:00) [37]> Roman_ln (08.12.2006 11:30:00) [0]
А описаного недостаточно, или нужен разжеваные до стадии манной каши?