- •Сборник задач по структурному программированию
- •Оглавление
- •Аннотация
- •Введение
- •Раздел 1
- •Работа с простыми типами данных
- •I a b c результат (можно/ нельзя)
- •Пример 1.1.1
- •Var hour,minute,n:longint;
- •Пример 1.1.2.
- •Var X,s,p:real;
- •I,n:integer;
- •Работа с символами, строками и текстом.
- •3 Слова длины 8 букв и т. Д.
- •Пример 1.2.1
- •Var s:string[80];
- •I,k:integer;
- •Разработка структурированных программ с использованием процедур и функций.
- •Пример 1.3.
- •Var I:word;
- •Var I:word;
- •X:integer;
- •I,m:word;
- •Работа с файлами разных типов.
- •Пример 1.4.
- •I: word;
- •Var X:integer;
- •Var I:word;
- •Var X:integer;
- •Inc(X);{Количество слов будет на 1 меньше!!}
- •Var p:boolean;
- •If p then
- •Var j:integer;
- •Var k,l:byte;
- •Динамические структуры данных. Списки.
- •Пример 1.5.
- •Var lp,pList,pStart : pEl_list;
- •I,oi,kol: integer; {переменные для работы с меню}
- •Insert_list(li);
- •Var I:integer;
- •Var I:integer;p:boolean;
- •Var k:char;
- •1: Begin dialog;
- •2: Begin dialog;
- •3: Begin dialog;
- •4: Begin
- •If noswap then begin
- •5: Begin
- •Var I:integer;
- •Vivod(2,2,25);
- •Решение графических задач
- •Пример 1_6.
- •Var dr,md:integer;
- •X,y,x1,y1,x2,x3,y2,y3,r:integer;
- •Var a:real;
- •Раздел 2
- •Работа с графическими объектами
- •Пример 2.1
- •X,y: real;
- •Var f1,f2:real;
- •Var gd,gm:integer;
- •Xb,xe,I,j:integer;
- •Работа с объектами- векторами
- •Пример 2.2
- •Var t:tPerson;
- •Interface
- •Implementation
- •I:integer;
- •I:integer;
- •I,j:integer;
- •Var m:integer;
- •Init(m);
- •Insert;
- •Работа с объектами - списками.
- •Пример 2.3
- •Interface
- •Implementation
- •Var Pcur1:t_el;
- •Var fname:ss;
- •Var s1:ss; p:byte; I:byte;
- •Var I:integer;
- •Interface
- •Implementation
- •Var Mylt:my_list;
- •Разработка объектов- таблиц.
- •Работа со структурами данных типа дерево.
- •Inf: integer;
- •Пример 2.5.
- •Interface
- •Implementation
- •Var newnode:pnode;
- •X,nl,nr:integer;
- •Var I: word;
- •Var q:pnode;
- •Разработка многомодульных задач.
- •Приложение.
- •Interface
- •Ik:word;{количество записей}
- •IEl:elmnt;
- •Var init_Ok:boolean;
- •Implementation
- •Var I:word;
- •Var m:word;
- •Var I:word;
- •If n then begin
- •Var I:word;
- •Var I: word;
- •Var I:word;{при выходе уничтожаем все списки}
- •Interface
- •Implementation
- •1: Begin
- •2: Begin
- •3: Begin
- •1: Begin
- •2: Begin
- •I:byte;
- •1: Begin
- •2: Begin
- •3: Begin
- •4: Begin
- •Var stop:boolean;
Interface
type
pnode=^node;
node= record
key:integer;
left,right:pnode;
end;{один элемент двоичного дерева}
ttree= object {объект, для работы со структурой
данных типа дерева}
n: integer;{число узлов в дереве}
f,first:pnode;
constructor init;
destructor done(var t:pnode);
function create(m:integer):pnode;
procedure vivod(var t:pnode;m:integer);
procedure findel(var t:pnode;m:integer;ikey:integer);
procedure delel(var t:pnode;ikey:integer);
procedure addel(ikey:integer;var t:pnode);
end;
Implementation
uses crt;
constructor ttree.init;
begin
first:=nil;
n:=0;{создаем элемент пустого дерева}
end;
destructor ttree.done(var t:pnode);
begin
if t<>nil then
begin
with t^ do begin
done(left);
done(right);
end;
dispose(t);{Уничтожаем все дерево}
end;
end;
function ttree.create(m:integer):pnode;
Var newnode:pnode;
X,nl,nr:integer;
begin
n:=m;
if n=0 then
begin
create:=nil;
exit;
end;
nl:=n div 2;
nr:=n-nl-1;
{Создаем сбалансированное дерево}
new(newnode);
with newnode^ do begin
write('Введите очередное число ');
readln(key);
left:=create(nl);
right:=create(nr);
end;
create:=newnode;
end;
procedure ttree.vivod(var t:pnode;m:integer);
Var I: word;
begin
if t<> nil then {процедура вывода дерева
также рекурсивна, как и функция для его создания}
with t^ do begin
vivod(left,m+1);
for i:=1 to m do write('***');
writeln(key);
vivod(right,m+1);
end else
if m= 0 then
writeln('Дерева уже нет или еще нет!');
end;
procedure ttree.findel(var t:pnode; m:integer; ikey:integer);
begin
if t<> nil then
with t^ do begin
findel(left,m+1,ikey);
if key=ikey then
begin
writeln(' Элемент на ',m+1,'-ом уровне ');
writeln(ikey);
end;{Процедура поиска элемента в дереве
с определением уровня, на котором
находится найденный элемент}
findel(right,m+1,ikey);
end;
end;
procedure ttree.delel(var t:pnode;ikey:integer);
