А.А. Вылиток, Т.К. Матвеева - Динамические структуры данных. Задание практикума. Язык Паскаль (1113471), страница 7
Текст из файла (страница 7)
Требуется найти k – количество слов,которые удовлетворяют условию, заданному вариантом задания. В некоторыхвариантах кроме текста задаётся ещё одна буква.Варианты1)2)3)4)5)Подсчитать количество слов, которые:имеют последней буквой заданную;содержат заданную букву ровно два раза;содержат заданную букву не менее двух раз;первой и последней буквой имеют одну и ту же букву;имеют длину не менее пяти букв;6) имеют первой буквой заданную и ещё хотя бы одно её вхождение;7) имеют последней буквой заданную и ещё хотя бы одно её вхождение;8) содержат заданную букву, но ни первой, ни последней;9) не имеют последней буквой заданную;10) имеют длину не более трёх букв;- 40 -11) имеют первой и последней буквой одну и ту же заданную;12) не имеют первой и последней буквой одну и ту же заданную.Методические указания1.
Вводить последовательность слов следует посимвольно. Для представленияслов в программе использовать строковый тип подходящей длины. Словорасполагать в начальных компонентах строки, не используемые компонентызаполнять пробелами.2. Для внутреннего представления текста использовать список с заглавнымзвеном. Звено списка состоит из трёх полей: первое – строка, в которойхранится слово, второе – длина данного слова, третье – указатель на следующеезвено.3.
Для вставки очередного слова в список определить отдельную процедуру; дляподсчёта слов, удовлетворяющих условию, описать функцию. После построениясписка напечатать слова, находящиеся в звеньях списка, используя процедуруprint.Пример решенияПусть требуется найти, сколько в тексте слов длиной пять букв и вкоторых заданная буква встречается не менее двух раз.program sample(input, output);const n=10;template='9999999999';type line = packed array[1..n] of char;size=1..10;link= ↑node;node = recordword: line;length: size;next: linkend;list=link;var L: list;p: link;c: char;word: line;k,i: integer;procedure insert(p: link; word: line; length: size);{создаёт звено для слова word длины length и вставляетего в конец списка (после звена, на которое указывает p)}var q: link;- 41 -begin new(q);q↑.word:= word;q↑.length:=length;q↑.next:= nil{= p↑.next};p↑.next:= qend {insert};procedure print(p: list);{печатает слова из списка с заглавным звеном}begin p:=p↑.next;while p < > nil dobegin write(p↑.word,'9');p:=p↑.nextend;writeln;end {print};function amount(p: list; letter: char;length: size):integer;{подсчитывает количество слов в списке, удовлетворяющихусловию: длина равна length и буква letter входит вслово не менее двух раз}var k,m,i:integer;begink:=0;p:= p↑.next;while p < > nil dobeginif p↑.length=length thenbegin m:=0;for i:=1 to length doif p↑.word[i]= letter then m:= m+1;if m>= 2 then k:= k+1end;p:=p↑.nextend;amount:= kend {amount};begin {построение заглавного звена списка}new(L); L↑.next:= nil;writeln('Введите текст:');p:=L; {p установили на начало пустого списка}repeat i:=0; word:= template; read(c);{ввод очередного слова word из файла input}repeat i:=i+1; word[i]:= c; read(c);until (c = ',') or (c='.');- 42 -insert(p,word,i);p:=p↑.next; {p указывает на последнее звено}until c ='.';readln;print(L); {печать введённого текста}write('Задайте букву: 9');readln(c);{обработка списка и вывод результата}writeln;writeln('Результат: k=', amount(L,c,5));writeln('========================================');end.Замечание.
Идентификаторы word и length являются стандартнымиименами в языке Турбо Паскаль. В нашей программе они переопределены иимеют другой смысл.Литература1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. –М.: Наука,1989. – 320 с.2. Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы.
М.:Издательский дом «Вильямс», 2000. – 384с.3. Вирт Н. Алгоритмы и структуры данных. – СПб.: Невский Диалект, 2001. –352 с.4. Кнут Д. Искусство программирования. Том1. М.: Издательский дом«Вильямс», 2000. – 720с.5. Лавров С. Программирование. Математические основы, средства, теория. –СПб.: БХВ-Петербург, 2001. – 320 с.6. Любимский Э.З., Мартынюк В.В., Трифонов Н.П. Программирование. – М.:Наука, 1980. – 608с.7.
Пильщиков В.Н. Язык Паскаль: упражнения и задачи. – М.: Научный мир,2003. – 224с.- 43 -СодержаниеСтатические и динамические объекты. Ссылочный тип в языке Паскаль. .....3Линейные списки и их реализация посредством статических идинамических структур данных ..........................................................................8Реализация списков на Паскале........................................................................9Реализация списков посредством массивов ..................................................10Реализация списков посредством цепочек динамических объектов ..........14Списки с заглавным звеном ............................................................................20Рекурсивная обработка списков .....................................................................21Очереди и стеки.................................................................................................22Представление стеков с помощью массивов.................................................24Представление очереди с помощью списка с заглавным звеном ...............26Примеры задач с решениями ............................................................................28Задание практикума на ЭВМ .............................................................................40Постановка задачи ...........................................................................................40Варианты...........................................................................................................40Методические указания...................................................................................41Пример решения ..............................................................................................41Литература ...........................................................................................................43Содержание..........................................................................................................44- 44 -.