Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа на обработку текста.DOC
Скачиваний:
10
Добавлен:
01.05.2014
Размер:
124.93 Кб
Скачать

Санкт-Петербургский государственный

электротехнический университет «ЛЭТИ»

кафедра МОЭВМ

Курсовая работа по программированию

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

Факультет КТИ

группа 3341

студент Марьяскин Е.

Санкт-Петербург

2004 г.

1. Содержательная (исходная) постановка задачи.

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

2. Анализ и пример решения задачи.

2.1 Анализ задачи.

Для начала введем некоторые вспомогательные определения, которые понадобятся в ходе работы:

Буквой будем называть заглавную или прописную букву (лингвистическую) латинского алфавита

Знаком препинанияназовем любой символ, не являющийсябуквой

Гласной будем называть заглавную или прописнуюбукву A,E,I,O,U,Y

Словомбудем называть любой последовательный наборбукв.

Разделим впредь задачу на две части: первая связана с выводом словпо убыванию количества вхождений в текст, а вторая с сортировкой по алфавитубукввсловах, где этонеобходимо(критерий необходимости определен в разделе 1).

Решение первой задачи стоит проводить в несколько последовательных этапов:

  1. Выделение словиз текста

  2. Анализ на предмет подсчета количества вхождений для каждого найденного слова

  3. Демонстрация результата работы в виде отображения слових количества их вхождений в текст.

Во второй же задаче этапы такие:

  1. Выделение словиз текста

  2. Анализ на предмет необходимости(опр в п1) сортировкибукв(опр в п 2.1)

  3. Сортировка

  4. Демонстрация результата работы в виде отображения итоговых данных.

2.2 Пример решения.

Пусть входные данные – те, что заключены в кавычки: «DDDsa;fda^^^3памыпDDDabccabbacDDD»

В таком случае решение первой задачи должно происходить примерно так:

Выделяем слова:

«DDD

sa

fda

DDD

abc

cab

bac

DDD»

Сортируем по количеству вхождений:

« DDD– 3 раза

sa– 1 раз

fda– 1 раз

abc– 1 раз

cab– 1 раз

bac– 1 раз»

Вывод результата в данном примере по виду ничем не отличается от предыдущего пункта, поэтому не будем выписывать его еще раз.

Решение второй задачи начинается также с выделения словиз текста:

«DDD

sa

fda

DDD

abc

cab

bac

DDD»

После этого слова (те в которых этонеобходимо) должны быть отсортированы. В данном случае это слова «cab» и «bac» после сортировки результат такой:

«DDD

sa

fda

DDD

abc

abс

аbc

DDD»

Но, поскольку в этом задании нет никакого резона выводить одинаковые словадва или более раз, то объединим их в одно по месту первого вхождение в ту структуру, гдесловахранятся. Получаем:

«DDD

sa

fda

abc»

3. Формальная постановка задачи.

3.1 Исходные данные.

Исходными данными задачи является текст, хранящийся в виде некоторой заданной последовательности символов.

3.2 Ограничения на исходные данные.

Словатекста должны содержать количество символов не превосходящее некоторую заданную константу. В данной программе эта константа равна 501.

3.3 Результирующие (выходные) данные.

Результирующие данные первой части задания представляют собой хранимый набор слови количества их вхождений исходный текст, упорядоченный ровно по этому признаку.

Результирующие данные второй части задания – хранимый набор слов, сохранившихся различными (посимвольно) после сортировки в нихбукв.

3.4 Связь выходных данных с исходными данными.

Эта связь представима следующим образом: Из текста, представленного в пункте 3.1 формируется конструкция, хранящая выделенные слова и количества их вхождений в текст. Связь ее с исходными данными можно описать действием некоторой функции из исходного текста в саму такую конструкцию, причем это действие соответствует пунктам анализа из 2.1 для первой части задачи. Т.е. текст анализируется, из него по очереди выбираются слова, записываются в выходную конструкцию либо новым элементов либо увеличением количества вхождений одного из уже занесенных на единицу. Далее эта конструкция модифицируется согласно принципам убывания количества вхождений (которые, напомним, уже в ней хранятся) и представляется в качестве результата. Модификация такой конструкции тоже описывается функцией действующей из этой конструкции в нее же и производящей по сути сортировку по принципу убывания количества вхождений. Т.е. функция выбирает на каждом шаге самое популярноесловоконструкции, подает его на выход и удаляет из конструкции.

Подобная связь для второй части задачи отличается тем, что после создания описанной выше конструкции в ней не производится сортировка, но зато внутри нее действует функция, сортирующая буквывсловахтам, где этонеобходимо. Далее из конструкции убираются повторяющиеся слова, и оставшаяся ее часть представляется в качестве готового результата.