Пример 2. 2 procedure Show; {Вывести на экран последовательность в заданной форме}

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.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: