Определение частоты и расположения слов в документе - C#
Формулировка задачи:
Здравствуйте!Помогите пожалуйста с заданием, если можно с объяснениями)
Требуется: осуществить обработку текстового файла, содержащего некоторый
многостраничный текст. Будем считать, что одна страница текста состоит из 60 строк.
Результат обработки – текстовый файл, содержащий предметный указатель
встречающихся в тексте слов. В предметном указателе перечисляются слова в
алфавитном порядке. Для каждого слова указывается количество его вхождений в текст
и номера страниц, на которых встречается это слово. При формировании предметного
указателя, слова, начинающиеся с разных букв алфавита разделяются на группы:
А
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
. . . и т.д.
Решение задачи: «Определение частоты и расположения слов в документе»
textual
Листинг программы
- var rowsInLine = 60;
- var dict = new Dictionary<string, List<int>>();
- string[] line;
- int countOfRows = 0;
- using(var sr = new StreamReader(@"c:\c#\text.txt"))
- while(!sr.EndOfStream)
- {
- line = sr.ReadLine().ToLower().Split(" ,.?!\'()\"".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
- countOfRows++;
- foreach(var word in line)
- {
- if(!dict.ContainsKey(word)) dict.Add(word, new List<int>() { countOfRows/rowsInLine + 1 });
- else dict[word].Add(countOfRows/rowsInLine + 1);
- }
- }
- var result = dict.OrderBy(x=>x.Key).GroupBy(x => x.Key[0]);
- foreach(var group in result)
- {
- Console.WriteLine(group.Key.ToString().ToUpper());
- foreach(var item in group)
- {
- Console.WriteLine(item.Key.PadRight(20,'.') + " " + item.Value.Count + ":" + string.Join(" ",item.Value.Distinct()));
- }
- }
- Console.ReadKey(true);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д