
- •Сборник задач по структурному программированию
- •Оглавление
- •Аннотация
- •Введение
- •Раздел 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;
Var s1:ss; p:byte; I:byte;
begin
Pcur:=First;
clrscr;textcolor(red);
writeln('Удаление лишних пробелов');
while Pcur<>nil do
begin
i:=1;
s1:=' ';
repeat
p:=pos(' ',Pcur^.s);
{Находим позицию первого пробела в предложении}
if (p<>0) and (p=i) then
delete(Pcur^.s,p,i) else
{Все подряд стоящие пробелы находим и сразу удаляем, так как они уже лишние}
if (p<>0) and (p<>i) then
begin
s1:=s1+copy(Pcur^.s,i,p);
delete(Pcur^.s,i,p);
{Часть предложения с одним пробелом копируем в буфер и удаляем, чтобы не считать уже сосчитанные пробелы}
end;
until p=0;
s1:=s1+Pcur^.s;
{А теперь нужно добавить ту часть предложения, в которой нет пробелов}
Pcur^.s:=s1;
Pcur:=Pcur^.next;
end;
end;
Procedure MY_list.Outtext;
Var I:integer;
begin
clrscr;
i:=0;
Pcur:=First;
while Pcur<>nil do
begin
writeln(Pcur^.s);
inc(i);
if i=24 then
{ Если количество предложений будет больше, чем число строк на обычном экране}
begin
i:=0;
write('Нажмите любую клавишу');
readkey;
writeln;
end;
Pcur:=Pcur^.next;
end;
writeln('Вывод завершен');
readkey;
end;
end.
unit prg9_1;{Этот модуль включает все вспомогательные действия типа создания файла данных, работа с меню и вывод самого меню на экран }
Interface
uses crt,prg9;
procedure run;
function read_name_file(var f:text):ss;
Implementation
procedure run;
Var Mylt:my_list;
ch:char;
begin
Mylt.init;
repeat
clrscr;
textcolor(white);
writeln(' Выберите действия?');
textcolor(yellow);
write('1. Открыть файл с текстом',#10#13);
write('2. Удалить лишние пробелы',#10#13);
write('3. Вывести текст на экран',#10#13);
write('4. Выход из программы',#10#13);
ch:=readkey;
case ch of
'1': Mylt.loadfile;
'2': begin
clrscr;gotoxy(1,20);
writeln(' Удаление пробелов');
Mylt.Del_prob;readln;
end;
'3': begin
gotoxy(1,3);
Mylt.Outtext;
end;
'4': begin
Mylt.done; exit;
end;
end;
until false;
end;
function read_name_file(var f:text):ss;
var s1:ss;
ch:char;
begin
write(' Введите имя файла ');
readln(s1);
assign(f,s1);
read_name_file:=s1;
rewrite(f);
repeat
Writeln('Введите произвольное предложение');
readln(s1);
writeln(f,s1);
writeln('Есть еще предложения?');
readln(ch);
until ch='n';
close(f);
end; end.