static void Main(string[] args) { #region Заполнение словаря //инициализация словаря Trie dictionary = new Trie(); //Считываем строку с количеством слов для занесения в словарь string readLinesRow = Console.ReadLine(); int readLinesCount; //Если введено не число то выходим из приложения if (!int.TryParse(readLinesRow, out readLinesCount)) Environment.Exit(0); //Заполняем словарь for (int i = 0; i < readLinesCount; i++) { string[] inputFileLine = Console.ReadLine().Split(' '); //если в строке не 2 элемента то завершаем приложение if(inputFileLine.Length != 2) Environment.Exit(0); string word = inputFileLine[0]; int weight = 0; //Если второй элемент не число то завершаем приложение if(int.TryParse(inputFileLine[1], out weight)) dictionary.AddWord(word, weight); else Environment.Exit(0); } #endregion #region Поиск по словарю //Считываем строку с количеством префиксов по которым будет производится поиск readLinesRow = Console.ReadLine(); //Если введено не число то выходим из приложения if (!int.TryParse(readLinesRow, out readLinesCount)) Environment.Exit(0); //Заполняем массив префиксов по которым будет производится поиск string[] prefixesForSearch = new string[readLinesCount]; for (int i = 0; i < readLinesCount; i++) prefixesForSearch[i] = Console.ReadLine(); //Выводим в консоль все найденные слова for(int i = 0; i < readLinesCount; i++) { IEnumerable<string> searchResults = dictionary.GetWordsByPrefix(prefixesForSearch[i]); foreach (string s in searchResults) Console.WriteLine(s); Console.WriteLine(); } #endregion }
static void Main(string[] args) { #region Создание таймера Stopwatch timer = new Stopwatch(); timer.Start(); #endregion #region Заполнение словаря string dictionaryInputFilePath = "Files\\test.in"; //Если файл с входными данными не найден то завершаем приложение if (!File.Exists(dictionaryInputFilePath)) { Console.WriteLine("Файл со словарём не найден."); Console.ReadKey(); Environment.Exit(0); } StreamReader dictionaryInputFileStream = new StreamReader(dictionaryInputFilePath); Trie dictionary = new Trie(); string readLinesRow = dictionaryInputFileStream.ReadLine(); int readLinesCount; if (int.TryParse(readLinesRow, out readLinesCount)) { for (int i = 0; i < readLinesCount; i++) { string[] inputFileLine = dictionaryInputFileStream.ReadLine().Split(' '); string word = inputFileLine[0]; int weight = 0; int.TryParse(inputFileLine[1], out weight); dictionary.AddWord(word, weight); } } else { Console.WriteLine("Строка не является числом."); Console.ReadKey(); Environment.Exit(0); } #endregion #region Поиск по словарю string testOutputFilePath = "Files\\test.out"; StreamWriter testOutputFileStream = new StreamWriter(testOutputFilePath, false); readLinesRow = dictionaryInputFileStream.ReadLine(); if (int.TryParse(readLinesRow, out readLinesCount)) { for (int i = 0; i < readLinesCount; i++) { string inputWordForSearch = dictionaryInputFileStream.ReadLine(); IEnumerable<string> searchResults = dictionary.GetWordsByPrefix(inputWordForSearch); foreach (string s in searchResults) testOutputFileStream.WriteLine(s); testOutputFileStream.WriteLine(); } } else { Console.WriteLine("Строка не является числом."); Console.ReadKey(); Environment.Exit(0); } #endregion #region Закрываем потоки к файлам dictionaryInputFileStream.Close(); testOutputFileStream.Close(); #endregion #region Вывод значений таймера timer.Stop(); Console.WriteLine(timer.Elapsed.ToString("G")); Console.ReadKey(); #endregion }