Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

сохранение связей между соотв. компонентами массивов после сортировки

6.2K
11 июня 2006 года
zercalo
75 / / 05.06.2006
у меня есть два связанных компонента. Скажем, работник и зарплата.. . Связаны они у меня порядковыми номерами массивов. Ну, скажем, r[1]-фио работника, z[1]-его зарплата. Но возник вопрос сортировки зарплаты по убывающей. Сортировку я сделать могу, но не ясно как сохранить связь отсортированной по убывающей зарплаты с соответствующим работником.. .
9.4K
12 июня 2006 года
_nоrth_
99 / / 24.04.2006
Можно ввести еще один массив
ndx: array [1..N] of Integer;

инициализировать
for i:= 1 to N do ndx := i;

и при сортировке переставлять элементы массива.

напр.
a[1] = 'alfa'
a[2] = 'beta'
a[3] = 'gamma'

r[1] = 80
r[2] = 20
r[3] = 60

ndx[1] = 1
ndx[2] = 2
ndx[3] = 3

после сортировки

r[1] = 20
r[2] = 60
r[3] = 80

ndx[1] = 2
ndx[2] = 3
ndx[3] = 1

т.е. для r[1] соответствует 2я запись в a, итд.

Или же
 
Код:
type person = record
  fio: string[64];
  zarplata: integer;
end;

var
  kartoteka: array [1..3] of person;
И сортировать массив записей, и тогда не нужны фокусы с доп.массивом.
242
12 июня 2006 года
Оlga
2.2K / / 04.02.2006
тема закрыта, ответ на вопрос удален, до тех пор пока не будет
изменено название темы
6.2K
12 июня 2006 года
zercalo
75 / / 05.06.2006
у меня есть два связанных компонента. Скажем, работник и зарплата.. . Связаны они у меня порядковыми номерами массивов. Ну, скажем, r[1]-фио работника, z[1]-его зарплата. Но возник вопрос сортировки зарплаты по убывающей. Сортировку я сделать могу, но не ясно как сохранить связь отсортированной по убывающей зарплаты с соответствующим работником.. .
________
_north_
большое спасибо, что б я без тебя делал. Твой пост я видел. В первом случае я не понял, каким образом ты рассчитываешь привязать третий числовой массив, к другому числовому.
а второй ответ действительно навел на мысль сделать это через record. Сейчас еще в литературе пороюсь.. .
_________
Уважаемая ольга кр..). Пожалуйста, дайте людям пожить отпущенный им не слишком длинный срок слегка поспокойней..). Особенно вставляет оставленная вами короткая заметка, что тема вновь будет открыта, как только будет изменено её название..). Непонятно только, кто должен изменить название темки. Вы не изменили, а для всех остальных доступ закрыт.. . Теперь я понимаю, почему вы не программируете на делфи.. . Какой же софт выдержит такие алгоритмы?..).
6.2K
12 июня 2006 года
zercalo
75 / / 05.06.2006
OlgaKr
ну хоть за это спасибо..).
242
12 июня 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Уважаемая ольга кр..). Пожалуйста, дайте людям пожить отпущенный им не слишком длинный срок слегка поспокойней..).


перестань хамить, немного прислушивайся к просьбам модераторов и все будет ОК
если я не права, всегда есть возможность отписать мне в приват и в
вежливой форме высказать мои ошибки, которые я всегда готова исправить

Цитата:
Особенно вставляет оставленная вами короткая заметка, что тема вновь будет открыта, как только будет изменено её название..). [COLOR=red]Непонятно только[/COLOR], кто должен изменить название темки. Вы не изменили, а для всех остальных доступ закрыт.. . Теперь я понимаю, почему вы не программируете на делфи.. . Какой же софт выдержит такие алгоритмы?..).


не моя вина что ты такой недогадливый :)
приват еще никто не отменял, я тоже вроде не обязана все
разжевывать и в рот ложить, здесь форум для взрослых людей +
программистов ...

9.4K
12 июня 2006 года
_nоrth_
99 / / 24.04.2006
Код:
procedure TForm1.Button2Click(Sender: TObject);
type person = record
  fio: string[64];
  zarplata: integer;
end;
var
  kartoteka: array [1..5] of person;
  i, j : integer;
  t: person;
begin

  kartoteka[1].fio := 'alfa';
  kartoteka[2].fio := 'beta';
  kartoteka[3].fio := 'gamma';
  kartoteka[4].fio := 'omega';
  kartoteka[5].fio := 'pi';

  kartoteka[1].zarplata := 80;
  kartoteka[2].zarplata := 20;
  kartoteka[3].zarplata := 60;
  kartoteka[4].zarplata := 90;
  kartoteka[5].zarplata := 10;

  for i :=1 to 4 do
    for j:=5 downto i+1 do
      if kartoteka.zarplata>kartoteka[j].zarplata then begin
        t:=kartoteka;
        kartoteka:=kartoteka[j];
        kartoteka[j]:=t;
    end;

  for i:=1 to 5 do  ShowMessage(kartoteka.fio  + '  ' + IntToStr(kartoteka.zarplata));
end;
6.2K
12 июня 2006 года
zercalo
75 / / 05.06.2006
_nоrth_
спасибо.. . Особенно, что расписал так.. .
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог