- •Санкт-Петербургский государственный
- •2.2 Пример решения.
- •3. Формальная постановка задачи.
- •4. Спецификация программы.
- •4.1 Исходные данные.
- •4.2 Функции программы по обработке исключительных ситуаций.
- •4.3 Выходные данные.
- •4.4 Сценарий диалога.
- •5 Разработка структур данных и алгоритмов.
- •6. Текст программы.
- •6.1 МодульInfo.
- •6.2 Модуль lLisTt
- •6.3 Модуль Service.
- •6.4 Модуль Kur
- •6.5 Программа.
- •7. Испытание программы.
- •8. Анализ результатов.
6. Текст программы.
6.1 МодульInfo.
Unit Info;
Interface
const
cStrSize = 50; {ограничитель длины слова}
type
pList = ^tList;
UsedList=record{основной список – структура хранения данных}
L,Cur,Pred:pList
end;
pUList = ^UsedList;
tStr=record{строка – представление слова}
S: array [1..cStrSize] of Char;
Col: Integer
end;
Word = record
Word: tStr;
Num: Longint
end;
tInfo = ^Word;
tList = record
Date:tInfo;
Next: pList
end;
tpStr = ^tStr;
tpWord = ^tInfo;
Implementation
begin
end.
6.2 Модуль lLisTt
unit LLisTT;
interface
Uses Info;
function EOLIst(vlist_:pUList):Boolean; {Проверка на конец списка}
procedure GoBOL(var vList_:puList); {Переход в начало списка}
procedure GoNext(var vlist_:puList); {Переход к следующему элементу}
function GetEl(vlist_:puList):tInfo; {Получение элемента из списка}
procedure Create(vList_:pUList); {Инициализация списка}
implementation
procedure Create(vList_:pUList);
begin
vList_^.L:=Nil;
vList_^.Pred:=Nil;
vList_^.Cur:=Nil;
end;
function EOLIst(vlist_:pUList):Boolean;
begin
If vlist_^.Cur^.Next=Nil then
EOList:=true
else
EOList:=false
end;
procedure GoBOL(var vList_:puList);
begin
If vlist_^.L<>Nil then
begin
vList_^.Cur:=vlist_^.L;
vlist_^.Pred:=Nil
end
else
begin
vList_^.Cur:=Nil;
vlist_^.Pred:=Nil
end
end;
procedure GoNext(var vlist_:puList);
begin
If not(EOList(vlist_)) then
begin
vlist_^.Pred:=vlist_^.Cur;
vlist_^.Cur:=vlist_^.Cur^.Next;
end
end;
function GetEl(vlist_:puList):tInfo;
begin
If vList_^.Cur<>Nil then
GetEl:=vList_^.Cur^.Date
end;
begin
end.
6.3 Модуль Service.
Unit Service;
interface
Uses crt;
Procedure ReadFout(S:String); {Чтение файла}
Procedure WriteFin(S:String); {Перезапись файла}
implementation
procedure WriteFin(S:String);
var
C:Char;
F:Text;
begin
assign(F,S);
rewrite(F);
C:='A';
clrscr;
writeLn(' ...Press Esc to end edition...');
writeLn;
while Ord(C)<>27 do
begin
C:=readkey;
If (Ord(C)<>072)and(Ord(C)<>075)and(Ord(C)<>077)and(Ord(C)<>080)and(Ord(C)<>27)and(Ord(C)<>13) then
begin
write(C);
write(F,C)
end;
If (Ord(C)=072)or(Ord(C)=075)or(Ord(C)=077)or(Ord(C)=080) then
GotoXY(WhereX-1,WhereY);
If Ord(C)=13 then
begin
WriteLn;
WriteLn(F)
end
end;
close(F)
end;
procedure ReadFout(S:string);
var
C:Char;
F:Text;
begin
assign(F,S);
reset(F);
clrscr;
writeLn(' ...Press any key to exit reading...');
writeLn;
while not(Eof(F)) do
begin
Read(F,C);
write(C)
end;
readkey;
close(F)
end;
begin
end.