Пример #1
0
        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
        }
Пример #2
0
        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
        }