![]() |
|
|
#1
|
|||
|
|||
![]() помогите пожалуйста сортировать из записи дату..
вот такая вещь: Код:
type recp = record names: string; date : array[1..3]; end; var ... zapis1 : array[1..10] of recp; zapis2 : recp; ... date[1] - чило date[2] - месяц date[3] - год нужно сортировать по всей дате... помогите пожалуйста.. писал так: Код:
for i:= 1 to n-1 do repeat flg := 0; if (zapis1[i].date[3] > zapis1[i+1].date[3]) then begin zapis2 := zapis1[i]; zapis1[i] := zapis1[i+1]; zapis1[i+1] := zapis2; flg := 1; end; until flg = 0; вобщем здесь сортировка работает, но только по году. если я начинаю дальше сортировать по месяцу то сортируется только по месяцу.. пробовал обойтись и таким методом: Код:
for i:= 1 to n-1 do repeat flg := 0; if (zapis1[i].date[3] > zapis1[i+1].date[3]) and (zapis1[i].date[2] > zapis1[i+1].date[2]) and (zapis1[i].date[1] > zapis1[i+1].date[1]) then begin zapis2 := zapis1[i]; zapis1[i] := zapis1[i+1]; zapis1[i+1] := zapis2; flg := 1; end; until flg = 0; тоесть сортировка сазу по всей дате, но н сортирует только по числу ![]() помогите пожалуйста! |
#2
|
|||
|
|||
![]() неужели никто не поможет с сортировкой?
![]() |
#3
|
|||
|
|||
![]() Попробуй сортировать так:
Код:
function GetNum(i: integer): integer; begin Result := zapis1[i].date[3] * 1000 + zapis1[i].date[2] * 100 + zapis1[i].date[1]; end; procedure Sort; ...... if GetNum(i) > GetNum(i + 1) then begin .... обмен .... end; ..... end; |
#4
|
|||
|
|||
![]() функции нельзя использовать...
p.s. задание такое Последний раз редактировалось ApplicatiOn, 14.12.2008 в 20:12. |
#5
|
|||
|
|||
![]() ну тогда не используй функцию, я написал так, чтобы понятнее было.
Код:
procedure Sort; ...... if (zapis1[i].date[3] * 1000 + zapis1[i].date[2] * 100 + zapis1[i].date[1]) > (zapis1[i + 1].date[3] * 1000 + zapis1[i + 1].date[2] * 100 + zapis1[i + 1].date[1]) then begin .... обмен .... end; ..... end; |
#6
|
|||
|
|||
![]() я функции не знаю (только процедуры).. во втором варианте понятнее, спасибо)
|