Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Пояснения к программе. Используется связанный список с пустым заглавным звеномИспользуется связанный список с пустым заглавным звеном. Для исключения и вставки звеньев предназначены процедуры ISKL и Vstavka. Используются указатели: Str – на начало строки; 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 за звеном, 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.
|