Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.12.2008, 17:51
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию сортировка

помогите пожалуйста сортировать из записи дату..

вот такая вещь:

Код:
type
recp = record
       names: string;
       date : array[1..3];
       end;

var
...
zapis1 : array[1..10] of recp;
zapis2 : recp;

...
в date содержатся 3 поля:
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  
Старый 14.12.2008, 20:00
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

неужели никто не поможет с сортировкой?
Ответить с цитированием
  #3  
Старый 14.12.2008, 20:07
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Попробуй сортировать так:
Код:
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  
Старый 14.12.2008, 20:09
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

функции нельзя использовать...

p.s. задание такое

Последний раз редактировалось ApplicatiOn, 14.12.2008 в 20:12.
Ответить с цитированием
  #5  
Старый 14.12.2008, 20:14
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

ну тогда не используй функцию, я написал так, чтобы понятнее было.
Код:
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  
Старый 14.12.2008, 20:16
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

я функции не знаю (только процедуры).. во втором варианте понятнее, спасибо)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:06.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025