q:= List; { Поиск места вставки начинаем с головы }

      { Двигаемся по списку, пока следующий элемент существует

      и его номер меньше вставляемого }

      while Assigned(q^.mNext) and (q^.mNext^.mWord < aWord)

      do q:=q^.mNext;

      if q^.mWord > aWord then begin

      { вставка на первое место }

      p^.mNext:=List;       { первый становится вторым }

      List:=p;       { а текущий- первым }

      end else begin

      { вставка в середине или в конце списка }

      p^.mNext:=q^.mNext; { связываем текущий со следующим }

      q^.mNext:=p;       { связываем предыдущий с текущим }

      end

      end

end;

      { Добавление слова либо увеличение его счетчика }

procedure AddWord(const aWord : string);

var P : PRec;

begin

P:= Find(aWord);

if Assigned(p)

      then Inc(P^.mCount)

      else AddToSortList(aWord);

end;

      { Выделение и добавление слов из прочитанной строки }

procedure AddLine(S: string);

const CLetter = ['A'..'Z','_'];

      CDigits = ['0'..'9'];

var W : string; i : integer;

begin

{ переводим все буквы строки в верхний регистр }

for i:=1 to Length(S) do S[i]:= UpCase(S[i]);

while Length(S)>0 do begin

{ удаляем все небуквы в начале строки }

while (Length(S)>0) and not (S[1] in CLetter) do Delete(S,1,1);

if Length(S)>0 then begin

      W:='';

      { копируем все буквы и цифры в слово W и удаляем из строки }

      while (Length(S)>0) and (S[1] in CLetter+CDigits) do begin

      W:= W+S[1];

      Delete(S,1,1);

      end;

      if Length(W)>1 then AddWord(W); { Если не буква, вставляем в список }

end;

end;

end;

      { Распечатка списка }

procedure PrintList(var F: text);

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату