Program Number_2_2; {текст основной программы}
uses crt,prg8;
var t:TPerson;
Begin
t.run;
End.
Unit Prg8;{ текст модуля, содержащего все
объявления объекта -последовательности}
Interface
uses Crt;
{Создать последовательность из некоторых сведений о жителях некоторого района. Данные представлены в формате: фамилия, возраст. Отсортировать последовательность по возрасту методом простых включений. Синтаксически решение задачи оформить через структуру объект- последовательность. Эту структуру можно рассматривать, как объект- персона.}
Type
Telement = record { Структура- запись }
Title: string[20]; { Фамилия }
age: integer; { Номер по порядку }
end;
pVec=^Vector;
Vector=array[0..0] of Telement;
TPerson=object
pV:pVec;
n,nm:integer;
constructor Init(a:integer);
destructor Done;
procedure Insert; {Вставить элементы
в последовательность}
procedure Show; {Вывести на экран последовательность в заданной форме}
procedure Sort; {Сортировка последовательности
методом простого включения по возрасту}
procedure Run; {выполнить заранее определенную
последовательность действий}
end;
ff=file of Telement;{}
|
|
Implementation
constructor TPerson.init(a:integer);
Begin
Getmem(pv,a*sizeof(Telement));
{Выделение памяти для динамического вектора}
nm:=a;
end;
destructor TPerson.Done;
Begin
Freemem(pv,nm*sizeof(Telement));
{Освобождение динамической памяти}
end;
procedure Tperson.Insert;
Var
i:integer;
Begin
for i:=1 to nm do
Begin
write('Введите фамилию ');
readln(pv^[i].Title);
write('Введите возраст ');
readln(pv^[i].age);
end;
end;
procedure TPerson.Show;
Var
i:integer;
Begin
for i:=1 to nm do
Begin
writeln(pv^[i].Title:20,' ',pv^[i].age:5);
end;
end;
procedure TPerson.Sort;
Var
i,j:integer;
temp: Telement;
Begin
for i:=2 to nm do
Begin
temp:=pV^[i];
pV^[0]:=temp;
j:=i-1;
while temp.age<pv^[j].age do
Begin
pv^[j+1]:=pv^[j];
j:=j-1;
end;
pv^[j+1]:=temp;
end;
end;
procedure TPerson.run;
var m:integer;
Begin
write('Введите количество сведений ');
readln(m);
init(m);
insert;
show;
readln;
sort;
show; readln;
done;
end;
Begin
End.