к завтрашнему дню надо решить эту задачу 'Дан массив записей, содержащих дату (число, месяц, год) и время (час, минута, секунда). Упорядочить этот массив в порядке «возрастания», т.е. от более ранних значений к более поздним. ' Но я даже толком в смысл задачи не въехал. Помогите чем можете. заранее ОгРоМнОе спасибо.
TypeОн почти подходит для решения твоей задачи... Почти - потому что не предназначен он для сортировки записей, он сортирует целые числа... Еще один препон - нельзя сравнивать между собой записи, ибо это НЕвстроенные типа Паскаля, и он про твой тип ничего не знает. Но если сделать так:
arrType = Array[1 .. n] Of Integer;
Procedure Bubble(Var ar: arrType; n: integer);
Var i, j, T: Integer;
Begin
For i := 1 To n Do
For j := n DownTo i+1 Do
If ar[Pred(j)] > ar[j] Then { < }
Begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T
End
End;
Type, то все заработает...
myRec = Record { Здесь - те поля, которые тебе нужны } End;
arrType = Array[1 .. n] Of myRec;
Function isMore(r1, r2: myRec): boolean;
begin
{
Функция сравнивает содержимое полей R1 и R2, и возвращает True, если дата/время, записанные
в R1 больше (позже) даты/времени, записанного в R2; иначе возвращается False
Как именно сравнивать записи - попробуй решить для себя сам... Можно, конечно,
сделать перебор по всем полям, начиная с года, потом месяц, день, ... Но проще,
наверное, будет перевести дату в какое-то универсальное число, например, количество
секунд до записанной даты, прошедшее, скажем, с 1 января 1900 года, и сравнивать эти секунды
}
end;
Procedure Bubble(Var ar: arrType; n: integer);
Var
i, j: Integer;
T: myRec;
Begin
For i := 1 To n Do
For j := n DownTo i+1 Do
If isMore(ar[Pred(j)], ar[j]) Then Begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T
End
End;