Консультация № 174119
10.11.2009, 16:28
35.00 руб.
10.11.2009, 17:10
0 4 1
Здравствуйте, уважаемые эксперты у меня такой вопрос. Надо написать метод класса для сортировки сведений по заработной плате, используя метод сортировки простым выбором. Имеется класс для обработки сведений о сотрудниках (Tperson=class) , структура данных типа запись
Sotrud=record
Famil:str;
Dolgn:str;
Zarpl:real;
данные хранятся в диамическом массиве Tdata=array of sotrud; надо написать процедуру
procedure Tperson.Sort_stat(var pp:Tdata);
var x:sotrud;
------ : integer;

заранее спасибо.
----------------------------------
Добавлено из мини-форума:
Сортировка нужна по значению заработной платы.

Обсуждение

давно
Мастер-Эксперт
425
4118
10.11.2009, 16:52
общий
Vlad9240:
А по какому признаку то сортировку надо проводить?
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Посетитель
268788
8
10.11.2009, 17:04
общий
по возрастанию заработной платы
давно
Профессионал
153662
1070
11.11.2009, 16:41
общий
Посмотрите вот эту процедуру, возможно она Вам подойдёт
Код:
procedure Sort_stat(var pp: Tdata; col: integer);
{col - количество записей в массиве}
var
i, j, min: integer;
buf, buf1: string;
buf2: real;
begin
for i:= 0 to col - 1 do
begin
{ поиск минимального элемента в части массива}
min:= i;
for j:= i + 1 to col - 1 do
if pp[j].Zarpl < pp[min].Zarpl then
min:= j;
{ поменяем местами pp[min] и pp[i] }
buf:= pp[i].Famil;
buf1:= pp[i].Dolgn;
buf2:= pp[i].Zarpl;
pp[i].Famil:= pp[min].Famil;
pp[i].Dolgn:= pp[min].Dolgn;
pp[i].Zarpl:= pp[min].Zarpl;
pp[min].Famil:= buf;
pp[min].Dolgn:= buf1;
pp[min].Zarpl:= buf2;
end;
end;
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Профессионал
153662
1070
14.11.2009, 14:50
общий
это ответ
Здравствуйте, Vlad9240.
Вот процедура, которая Вам нужна:
Код:
procedure Tperson.Sort_stat(var pp: Tdata; col: integer);
{col - количество записей в массиве}
var
i, j, min: integer;
buf, buf1: string;
buf2: real;
begin
for i:= 0 to col - 1 do
begin
{ поиск минимального элемента в части массива}
min:= i;
for j:= i + 1 to col - 1 do
if pp[j].Zarpl < pp[min].Zarpl then
min:= j;
{ поменяем местами pp[min] и pp[i] }
buf:= pp[i].Famil;
buf1:= pp[i].Dolgn;
buf2:= pp[i].Zarpl;
pp[i].Famil:= pp[min].Famil;
pp[i].Dolgn:= pp[min].Dolgn;
pp[i].Zarpl:= pp[min].Zarpl;
pp[min].Famil:= buf;
pp[min].Dolgn:= buf1;
pp[min].Zarpl:= buf2;
end;
end;
5
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Форма ответа