Реализовать консольное приложение, удовлетворяющее следующим требованиям:
- Использовать возможности ООП: классы, наследование, полиморфизм, инкапсуляция.
- Каждый класс должен иметь исчерпывающее смысл название и информативный состав.
- Наследование должно применяться только тогда, когда это имеет смысл.
- При кодировании следует придерживаться соглашения об оформлении кода code convention.
- Классы должны быть грамотно разложены в структуре проекта.
- Работа с консолью или консольное меню должно быть минимальным.
- Для хранения параметров инициализации можно использовать файлы.
- Возможно (не обязательно) следование подходящему по смыслу задачи паттерну проектирования.
- Приветствуется более детальная проработка предметной области.
Транспорт. Определить иерархию подвижного состава железнодорожного транспорта. Создать пассажирский поезд. Посчитать общую численность пассажиров и багажа. Провести сортировку вагонов поезда на основе уровня комфортности. Найти вагоны в поезде, соответствующие заданному диапазону параметров числа пассажиров.
Обычной проблемой анализа текстов является определение частоты и расположения слов в документе. Эта информация запоминается в конкордансе, где различные слова перечислены в алфавитном порядке и каждое слово снабжено ссылками на строки текста, в которых это слово встречается. Рассмотрим следующую цитату.
Peter Piper picked a peck of pickled peppers. A peck of pickled peppers Peter Piper picked. If Peter Piper picked a peck of pickled peppers, where is the peck that Peter Piper picked?
Слово "piper" встречается здесь 4 раза в строках 1, 2 и 3. Слово "pickled" встречается 3 раза в строках 1 и 3. Результат обработки этого текста представляется списком слов в алфавитном порядке, для каждого слова указывается частота его появления в тексте (количество вхождений) и список номеров строк, в которых встречается это слово. Если слово встречается в строке более одного раза, то номер этой строки указывается в списке только один раз:
a.............................3: 1 2
if............................1: 2
is............................1: 3
of............................3: 1 2
peck..........................4: 1 2 3
peppers.......................3: 1 2 3
peter.........................4: 1 2 3
picked........................4: 1 2 3
pickled.......................3: 1 3
piper.........................4: 1 2 3
that..........................1: 3
the...........................1: 3
where.........................1: 3
Требуется: осуществить обработку текстового файла, содержащего некоторый многостраничный текст. Будем считать, что одна страница текста состоит из N строк. Результ обработки – текстовый файл, содержащий предметный указатель встречающихся в тексте слов. В предметном указателе перечисляются слова в алфавитном порядке. Для каждого слова указывается количество его вхождений в текст и номера страниц, на которых встречатся это слово. При формировании предметного указателя, слова, начинающиеся с разных букв алфавита разделяются на группы:
А
a.............................120: 1 2 3 4 5 6 7 8 9 10 11 12
and............................89: 1 2 3 6 8 9 12
apple...........................3: 7 9
B
bag.............................2: 11 12
big.............................7: 5 7 10
C
cake............................1: 3
circle..........................3: 8 9
. . . и т.д.
Alexej Perovskij