Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сортировка массива записей [D7, Win2k, WinXP]


яблочго ©   (2008-01-13 20:13:00) 

Есть тип
Stud = record
 Name: String[20];
 Year: Integer;
end;


Есть массив Studs: array of Stud

Как отсортировать записи в массиве Studs по возрастанию поля Year в каждой записи?


Dennis I. Komarov   (2008-01-14 18:15:00) [1]

> [8] Гостик   (14.01.08 16:08)

На каждый чих, надо обязательно чего-нить скачать :)


palva   (2008-01-14 17:38:00) [2]

Можно обратиться к стандартной функции.

{$APPTYPE CONSOLE}
type
 Stud = record
  Name: String[20];
  Year: Integer;
 end;
var
 sarr: array[1..10] of Stud;
 i: Integer;

function cmp(var a, b): Integer; cdecl;
begin
 Result := Stud(a).Year - Stud(b).Year;
end;  

procedure qsort(base: Pointer; num, size: Integer; cmpfun: Pointer);
 cdecl; external 'msvcrt.dll';

begin
 for i:=1 to 10 do sarr[i].Year := Random(20) + 1990;
 qsort(@sarr, 10, sizeof(Stud), @cmp);
 for i:=1 to 10 do WriteLn(sarr[i].Year);
end.


Гостик   (2008-01-14 16:08:00) [3]

Скачай TSortList ( http://i-7.webhost.ru/sortlistr.zip) и работай с листом, а не с массивом


KilkennyCat   (2008-01-14 04:41:00) [4]


> И какая же тут разница?


странный вопрос... это ж очевидно: в первом случае Integer, а во втором Record.Field!


Юрий Зотов   (2008-01-14 02:01:00) [5]

> яблочго   (14.01.08 00:33) [3]

В первом случае пишем:
if Integer1 > Integer2 then ...

Во втором случае пишем:
if Record1.Field > Record2.Field then ...

И какая же тут разница?


Германн   (2008-01-14 01:05:00) [6]


> яблочго   (14.01.08 00:33) [3]

Тогда  palva ©   (13.01.08 21:51) [2]


sniknik   (2008-01-14 00:45:00) [7]

> в этом вся сложность.
т.е. ее нет? т.к. принцип одинаковый.
в чем же тогда дело?


яблочго   (2008-01-14 00:33:00) [8]

тут суть не в том. если бы был массив типа array of Integer или там array of Real то всё просто. но тут сортировка именно по ПОЛЮ в записи, в этом вся сложность.


palva   (2008-01-13 21:51:00) [9]

Слышал, есть метод пузыря. Ставишь пузырь знакомому программисту...


Efir   (2008-01-13 20:42:00) [10]

Тогда вопрос к Вам, а как можно отсортировать обычный массив?


Наверх

Титульная страница Поиск, карта сайта Написать письмо