Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Вниз

сортировка массива записей   Найти похожие ветки 

 
яблочго   (2008-01-13 20:13) [0]

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


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

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


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

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


 
palva ©   (2008-01-13 21:51) [2]

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


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

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


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

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


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


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

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


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

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

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

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

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


 
KilkennyCat ©   (2008-01-14 04:41) [7]


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


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


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

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


 
palva ©   (2008-01-14 17:38) [9]

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

{$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.


 
Dennis I. Komarov ©   (2008-01-14 18:15) [10]

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

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.06 c
9-1166878569
maxProg
2006-12-23 15:56
2008.02.10
Direct3D - Освещение


15-1199970591
@!!ex
2008-01-10 16:09
2008.02.10
Помогите доделать тир.


15-1199017899
AlexanderMS
2007-12-30 15:31
2008.02.10
Скрипты, меняющие только что введённый в редакторе кода текст


15-1199641953
DVM
2008-01-06 20:52
2008.02.10
Потестите модуль для расчета CRC8/16/32/64


3-1190981424
Tonich
2007-09-28 16:10
2008.02.10
Коннект к базе несколькими приложениями одновременно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский