Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 533

Раздел: Delphi » Прочее
/ вопрос открыт /

Приветствую, уважаемые эксперты!
У меня есть на форме компонент TListBox, в нем уже есть заполененные строки цифрами надо найти 5 строк у которых значения цифр будут больше остальных

F.@.E.R Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: F.@.E.R (статус: 1-ый класс)
Вопрос отправлен: 28 июля 2011, 15:10
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 16; последнее сообщение — 28 июля 2011, 16:37; участников в обсуждении: 4.
min@y™

min@y™ (статус: Доктор наук), 28 июля 2011, 15:25 [#1]:

Откуда такая задача? Она учебная или прикладная? Для чего нужно искать такие 5 строк и почему именно 5?

Может быть стоит отсортировать строки для начала?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Gooddy

Gooddy (статус: 3-ий класс), 28 июля 2011, 15:35 [#2]:

Отсортировать и взять 5 первых. Это по ходу "топ 5" такой.
Чисти код! Чисти код! Чисти код!
F.@.E.R

F.@.E.R (статус: 1-ый класс), 28 июля 2011, 15:43 [#3]:

Показывает активных пользователей, TListBox, у меня храняться количество сообщений каждого пользователя
Gooddy

Gooddy (статус: 3-ий класс), 28 июля 2011, 15:51 [#4]:

Нужно узнать номер тех записей, в которых наибольшее число сообщений?
Чисти код! Чисти код! Чисти код!
min@y™

min@y™ (статус: Доктор наук), 28 июля 2011, 15:52 [#5]:

Цитата (F.@.E.R):

TListBox, у меня храняться количество сообщений каждого пользователя

Не надо ничего хранить в визуальных компонентах! Храни список в памяти, сортируй его, делай с ним всё, что душе угодно. А TListBox пусть этот список ТОЛЬКО ОТОБРАЖАЕТ. А ещё лучше вместо TListBox используй TListView в режиме vsReport.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
F.@.E.R

F.@.E.R (статус: 1-ый класс), 28 июля 2011, 15:56 [#6]:

А как мне отсортировать ?
Gooddy

Gooddy (статус: 3-ий класс), 28 июля 2011, 15:58 [#7]:

У него хранятся юзеры и их сообщения в 2 разных ListBox.
И он по номеру определяет какое имя какому количеству сообщений соответствует. Сортировать нужно сразу и то и то. Либо (правильно) делать свою структуру данных - массив записей
TUser = record
Name: String;
Messages: Integer;
end;
Чисти код! Чисти код! Чисти код!
Gooddy

Gooddy (статус: 3-ий класс), 28 июля 2011, 16:00 [#8]:

А ещё лучше написать класс для такой структуры. Наследок от любого списка. Можно ассоциативный массив сделать, я где-то показывал как.
Чисти код! Чисти код! Чисти код!
min@y™

min@y™ (статус: Доктор наук), 28 июля 2011, 16:02 [#9]:

Цитата (Gooddy):

У него хранятся юзеры и их сообщения в 2 разных ListBox.

Нахрена такой брейнфакинг?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Gooddy

Gooddy (статус: 3-ий класс), 28 июля 2011, 16:10 [#10]:

Сам подумай. Раз у него сообщения юзверей хранятся в TListBox, где хранятся имена юзверей? В array of integer не иначе.
Чисти код! Чисти код! Чисти код!
Вадим К

Вадим К (статус: Академик), 28 июля 2011, 16:13 [#11]:

имена в integer? сильно!
Галочка "подтверждения прочтения" - вселенское зло.
F.@.E.R

F.@.E.R (статус: 1-ый класс), 28 июля 2011, 16:16 [#12]:

Так подскажите мне алгоритм сортировки
Вадим К

Вадим К (статус: Академик), 28 июля 2011, 16:19 [#13]:

алгоритмы сортировки известны - например сортировка пузырьком
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 28 июля 2011, 16:24 [#14]:

Цитата (F.@.E.R):

Так подскажите мне алгоритм сортировки

Да нафига он тебе? Всё уже написано создателями Delphi, надо только уметь этим пользоваться.
Для хранения инфы по каждому юзеру пиши класс:
TUser = class
private
  FName: string;
  FMessageCount: DWORD;
public 
  property ...
  property ...
end;

Для хранения списка юзеров бери готовый класс-список TObjectList. В нём уже есть сортировка, нужно только написать функцию сравнения двух юзеров, которая возвращает только 3 значения: -1 (меньше), 0 (равно), +1 (больше). Эту функцию подсовывать методу TObjectList.Soft.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
F.@.E.R

F.@.E.R (статус: 1-ый класс), 28 июля 2011, 16:31 [#15]:

Ладно разберусь как - нибудь сам.
Gooddy

Gooddy (статус: 3-ий класс), 28 июля 2011, 16:37 [#16]:

Тут привели алгоритм сортировки (Вадим К.) и несколько вариантов правильных структур для таких данных (я и min@ytm).

А разберёшься ты, конечно, сам.
Чисти код! Чисти код! Чисти код!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.03 сек.