Определение частоты и расположения слов в документе - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д