Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Пояснения к программе. Используется связанный список с пустым заглавным звеном





Используется связанный список с пустым заглавным звеном. Для исключения и вставки звеньев предназначены процедуры ISKL и Vstavka. Используются указатели:

Str – на начало строки;
UK – на звено, вслед за которым вставляется число повторений символа;
UT – на текущее анализируемое звено;
UGR – на начало обрабатываемой группы.

Type

Ukaz = ^Zveno;

Zveno = Record

Element: Char;

Next: Ukaz

end;

Var

Str, UK, UT, UGR, P: Ukaz;

K: 1.. 9; {счетчик одинаковых символов}

Simvol: Char;

{исключение звена, R – ссылка на звено,
предшествующее удаляемому}

procedure ISKL(R: Ukaz);

Var

P: Ukaz;

Begin

P:= R^.Next; {указатель – на исключаемое звено}

R^.Next:= R^.Next^.Next; {в предыдущем звене указатель – на следующее за исключаемым звено}

Dispose(P) {уничтожили исключаемое звено}

end; { ISKL }

{вставка звена с символом Bukva за звеном,
на которое указывает
Poz }

procedure Vstavka(Poz: Ukaz; Bukva: Char);

Var

P: Ukaz;

Begin

New(P); {создали новое звено}

P^.Element:= Bukva; {в него поместили символ}

P^.Next:= Poz^.Next; {поместили указатель из звена, за которым произв-ся вставка}

Poz^.Next:= P {в предыдущее звено указатель на новое}

end; { Vstavka }

Begin

{создали заглавное пустое звено}

New(Str); Str^.Next:= Nil;

UT:= Str;

WriteLn ('Введите текст, оканчивающийся точкой');

Repeat {ввод строки и создание связанного списка}

Read(Simvol);

Vstavka(UT, Simvol);

UT:= UT^.Next {передвинули текущий указатель}

Until Simvol = '.';

WriteLn;

UK:= Str;

UGR:= UK^.Next; {- на первое непустое звено}

while UGR^.Element <> '.' do

begin {начало обработки группы}

UT:= UGR^.Next; {- на звено за началом группы}

K:= 1;

while UGR^.Element = UT^.Element do

Begin

UT:= UT^.Next; {передвинули текущий указатель}

ISKL(UGR); {удалили повторяющийся символ}

K:= K + 1

end;

Simvol:= CHR(ORD('0')+ K); {заменили цифру символом}

Vstavka(UK, Simvol); {вставка цифры перед буквой}

UK:= UGR; {- на звено, оставшееся от группы}

UGR:= UGR^.Next {- на звено за обработанной группой}

end;

{обработка строки закончена}

WriteLn ('Преобразованный текст:');

UT:= Str;

Repeat

UT:= UT^.Next;

Simvol:= UT^.Element;

Write(Simvol)

Until Simvol = '.'

End.

 

Date: 2015-07-23; view: 491; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию