Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачник с исправлением.doc
Скачиваний:
55
Добавлен:
08.05.2015
Размер:
922.62 Кб
Скачать

Пояснения к программе

Используется связанный список с пустым заглавным звеном. Для исключения и вставки звеньев предназначены процедуры 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.

Литература

  1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. — М.: Наука, 1988.

  2. Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию. — М.: Наука, 1988.

  3. Алкок Д. Язык Паскаль в иллюстрациях. — М.: Мир,1991. — 192с.

  4. Вальвачев А.В., Крисевич В.С. Программирование на языке Паскаль для персональных ЭВМ ЕС: Справочн. пособие. — Минск: Вышейшая школа, 1989.

  5. Дагене В.А., Григас Г.К., Аугутис К.Ф. 100 задач по программированию. — М.: Просвещение, 1993. — 225с.

  6. Джонстон Г. Учитесь программировать. — М.: Финансы и статистика, 1989. — 368с.

  7. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0. — М.: "ДИАЛОГ-МИФИ", 1993. — 288 с.

  8. Йенсен К.,Вирт Н. Паскаль. Руководство для пользователя. — М.: Финансы и статистика, 1989. — 255с.

  9. Перминов О.Н. Программирования на языке Паскаль. — М.: Радио и связь, 1988. — 224с.

  10. Перминов О.Н. Язык программирования Паскаль: Справ. пособие. — М.: Радио и связь, 1989. — 128с.

  11. Пестриков В.М., Маслобоев А.Н. Turbo Pascal 7.0. Изучаем на примерах. — СПб.: Наука и техника, 2003. — 368 с.

  12. Пильщиков В.Н. Сборник упражнений по языку Паскаль. — М.: Наука, 1989. — 160с.

  13. Прайс Д. Программирование на языке Паскаль. — М.: Мир, 1987.

  14. Программирования на языке Паскаль: задачник / под ред. Усковой О.Ф. — СПб.: Питер, 2003. — 336 с.

  15. Немнюгин С.А. Turbo Pascal. Учебник. — СПб.: Питер, 2003. — 496 с.

  16. Немнюгин С.А. Turbo Pascal. Практикум. 2-е изд. — СПб.: Питер, 2003.

  17. Самохвалов В.А., Парасич В.А. Программирование ЭВМ и численные методы: Сб. задач. — Челябинск: ЧГТУ, 1992. — 83с.

  18. ФароновВ.В. Программирование на персональных ЭВМ в среде Турбо-Паскаль. — М.: Изд-во МГТУ, 1990. — 580с.