Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2010, 22:58   #1
dima-intro
Пользователь
 
Аватар для dima-intro
 
Регистрация: 11.12.2010
Сообщений: 43
Сообщение Работа с записями.

Есть запись.-Футболист-Стаж-Зароботок-
Надо сделать комплексную сортировку по стажу+по зароботку
У меня сортирует только по стажу.
Подскажите как сделать чтобы сортировало и по Зароботку тоже.
Очень прошу помочь,а то останется хвост...

вот код моей комплексной сортировки
Код:
function compareStajZar(r1, r2:TRecStud):boolean;  //Вспомагающая функция
begin
  if r1.Staj <> r2.Staj
  then result:=r1.Staj <= r2.Staj
  else result := r1.Fam <= r2.Fam;
end;


procedure sortArrayStajZar (var A:TArr; cnt:integer);
  	var i, j: integer; r: TRecStud; ok: boolean;
begin
  	i := cnt;
  	repeat
    i:=i-1;
    ok:=true;
    for j:=1 to i do
    // Сравниваем записи с помощью функции
    if not compareStajZar(A[j], A[j+1]) then
    begin
    r:=A[j];
    A[j]:=A[j+1];
    A[j+1]:=r;
    ok:=false;
    end;
until ok;
end;

Последний раз редактировалось Stilet; 30.12.2010 в 09:57.
dima-intro вне форума Ответить с цитированием
Старый 30.12.2010, 00:52   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

проверка 2 условий, цикл в цикле, во внешнем проверяем стаж, во внутреннем заработок. Или сортируем по заработку, уже сортированый по стажу список (что в общем то одно и тоже, только для понимания легче)
Надеюсь алгоритм понятен?(Извините код лень писать примеров куча на форуме)
vovk вне форума Ответить с цитированием
Старый 30.12.2010, 07:25   #3
dima-intro
Пользователь
 
Аватар для dima-intro
 
Регистрация: 11.12.2010
Сообщений: 43
По умолчанию

А можете написать, пожалуйста?
А то что-то у меня не получается, как ни пишу-не сортирует.
dima-intro вне форума Ответить с цитированием
Старый 30.12.2010, 09:46   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

плохо брать чужой код..
а ещё хуже (намного) не понимать - что в нём написано...
Код:
function compareStajZar(r1, r2:TRecStud):boolean; //Вспомагающая функция
begin
if r1.Staj <> r2.Staj
then result:=r1.Staj <= r2.Staj
else result := r1.Fam <= r2.Fam;
end;
читаем, если стажи не равны, то сравнить, у кого стаж больше,
если же стаж одинаковый (веточка else) то сравниваются фамилии.
Таким образом, данный код сортирует по стажу + по фамилии.


Вам достаточно написать:
Код:
function compareStajZar(r1, r2:TRecStud):boolean; //Вспомагающая функция
begin
if r1.Staj <> r2.Staj
then result:=r1.Staj <= r2.Staj
else result := r1.Заработок <= r2.Заработок;
end;
и всё!

p.s. т.к. приведён огрызок кода, то не видно описания структуры TRecStud,
поэтому, как у Вас в программе поле заработок называется в TRecStud - не видно.
измените .Заработок на своё поле...

Последний раз редактировалось Serge_Bliznykov; 30.12.2010 в 09:48.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.12.2010, 09:55   #5
dima-intro
Пользователь
 
Аватар для dima-intro
 
Регистрация: 11.12.2010
Сообщений: 43
По умолчанию

это не чужой код-это код из методы.

спасибо, что подсказали, но все равно не сортирует все вместе-только стаж.
dima-intro вне форума Ответить с цитированием
Старый 30.12.2010, 10:01   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ok:=false;
end;
until ok;
Оригинательно... Даже я на такое не способен.
Может тебе стоит посмотреть как делают сортировку? Найпростейшее использовать два цикла for а не то что ты наваял, ибо оно генетически ошибочно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с записями Ol_Bak Microsoft Office Access 5 09.02.2010 20:22
Работа с записями Viata Паскаль, Turbo Pascal, PascalABC.NET 3 24.06.2009 09:03
работа с записями Mango Помощь студентам 2 12.10.2008 23:54