- •Сборник задач по структурному программированию
- •Оглавление
- •Аннотация
- •Введение
- •Раздел 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;
Insert_list(li);
end;
end;
procedure List_displ;
{ Вывести полностью список на экран для проверки правильности записи и преобразований}
Var I:integer;
begin
i:=1;
lp:=pStart;
writeln('Список всех, имеющихся в файле ');
while lp<>nil do
begin
write(i,' ');
write(lp^.li.title+' ');
write(lp^.li.Nm+' ');
write(lp^.li.Pt+' ');
writeln(lp^.li.Number);
lp:=lp^.next;
i:=i+1;
end;
end;{Список можно теперь увидеть на экране}
procedure List_equal;
{Алгоритм поиска однофамильцев используется для упорядоченного списка по фамилиям, но он будет пригоден и для произвольного списка}
Var I:integer;p:boolean;
begin
lp:=pStart;
pList:=lp;
i:=1;
while lp<>nil do
begin
p:=true;
while (p and (pList<>nil)) do
begin
if pList<>lp then
if lp^.li.Title=pList^.li.Title then
begin
write(i,' ');
write(lp^.li.Title+' ');
write(lp^.li.Nm+' ');
write(lp^.li.Pt+' ');
writeln(lp^.li.Number);
i:=i+1;
p:=false;
end;
pList:=pList^.next;
end;
pList:=lp;
lp:=lp^.next;
end; {Просмотр списка начинается заново всегда со следующего элемента}
end; {конец поиска однофамильцев}
procedure Sort;
var
p1, p2, temp: pEl_list;
tt:list;
begin
if ((pStart = nil) or (pStart^.Next = nil)) then
exit;
repeat
p1 := pStart;
p2:=p1^.next;
noswap:=true;
while (p2 <> nil) do
begin
if (p1^.li.Title > p2^.li.Title) then
begin
{сравниваем только поля фамилий в списке}
noswap:=false;
tt := p1^;
p1^:= p2^;
p2^:= tt;
temp:= p1^.next;
p1^.next := p2^.next;
p2^.next:= temp;
end;
p1:=p2;
p2 := p2^.Next;
end;
until noswap;
end;{Конец сортировки}
procedure redact(x1,y1,l,v:integer);
begin
textbackground(2);
window(x1+2,y1+oi*2-1,x1+l+2,y1+oi*2-l);
clrscr;
write(alter[oi]);
textbackground(4);
window(x1+2,y1+v*2-i,x1+l+2,y1+v*2-l);
clrscr;
write(alter[v]);
end;
procedure dialog;
begin
textbackground(1);
window(30,2,78,23);
clrscr;
end;
procedure alt(x1,y1,l:integer); {это только меню в текстовом режиме для выполнения всех действий в определенной последовательности}