![]() |
|
|
|
|
#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
|
|||
|
|||
|
я функции не знаю (только процедуры).. во втором варианте понятнее, спасибо)
|