- •Сборник задач по структурному программированию
- •Оглавление
- •Аннотация
- •Введение
- •Раздел 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;
Пример 1.5.
program Number_1_5;
uses Crt;
{Создать список студентов и найти среди них однофамильцев}
const {список альтернатив для работы меню}
alter:array[1..5] of string[30]=(
'1.Создать файл',
'2.Создать список',
'3.Сортировка ',
'4.Вывод однофамильцев',
'5.Выход из программы');
type
list_d = record { Структура- запись }
Title : string[20]; { Фамилия }
Nm,Pt : string[15]; { Имя,отчество }
Number : integer; { Номер по порядку }
end;
ff=file of list_d;{список для сохранения исходных данных в файле, чтобы проще было отлаживать и проверять решение}
pEl_list = ^list; { Указатель на структуру - список }
list = record { Структура - список }
li : list_d;
next : pEl_list; {Ссылка на следующий элемент списка}
end;
Var lp,pList,pStart : pEl_list;
f :ff;
li :list_d;
noswap: boolean;{Для проверки выполнения сортировки}
ch: char;{Для самого простого варианта чтения символов}
I,oi,kol: integer; {переменные для работы с меню}
procedure init;
begin
pStart:=nil;
end;
procedure DeleteList;
{Уничтожаем список для того, чтобы освободить память при сохранении списка, допустим, в файле}
begin
lp:=pStart;
while lp <> nil do begin
pList:=lp;
Dispose(pList); {Уничтожается очередной элемент списка}
lp:= lp^.Next; {Перемещаемся по списку}
end;
end; { DeleteList }
{-------------------------------}
procedure Insert_list(el: list_d);
begin { Элемент вставляется следующим в списке}
new(pList);
if pStart =nil then
begin
with pList^ do
begin
li.Title:=el.title;
li. Nm :=el.Nm;
li.Pt :=el.Pt;
li.Number:=el.Number;
next :=nil;
end;
pStart:=pList;{Запоминаем начало списка}
lp:=pList; {А это текущий элемент списка, при одном элементе в списке - это первый элемент списка}
end
else
begin
lp^.next:=pList;
with pList^ do
begin
li.Title:=el.title;
li. Nm :=el.Nm;
li.Pt :=el.Pt;
li.Number:=el.Number;
next :=nil;
end;
lp:=pList;{Движение по списку обеспечено}
end;
end; { InsertEl }
{-------------------------------}
procedure SaveBase_in_file;
{ Сохранение введенных данных в файле позволяет не вводить одну и туже информацию}
var
FileName : string[12];
k :char;
begin
FileName := 'Wnd.bas';
Assign(f, FileName);
Rewrite(f);
repeat
with li do
begin
write(' Вводите список: фамилия ');
Readln(title);
write( ' Имя ');
readln(Nm);
write(' Отчество ');
readln(Pt);
write(' Номер ');
readln(Number);
end;
write(f,li);
writeln('Есть еще сведения для списка?');
readln(k);
until k='n';
Close(f);
Writeln( 'Данные сохранены. Нажмите любую клавишу ...');
ReadKey;
end; { SaveBase_in_file}
procedure List_creat;
{Создание обычного списка при чтении данных из файла Файл по умолчанию устанавливается для решения задачи с любым произвольным именем }
begin
Init;
Assign(f,'Wnd.bas');
reset(f);{Проверку наличия файла опускаем, предполагая уже известными эти действия }
while not eof(f) do
begin
read(f,li);
