Example #1
0
        private static IList <LetterStats> FillLetterStatsDouble(ReadOnlyStream stream)
        {
            List <LetterStats> lstats = new List <LetterStats>();
            LetterStats        nx     = new LetterStats
            {
                Letter = "",
                Count  = 1
            };

            var sr = new StreamReader(stream.fstream);

            // stream.ResetPositionToStart();
            //StreamReader sr = new StreamReader(streamex._localStream);
            // while (!stream.IsEof)
            while (sr.Peek() > 0)
            {
                //   char c = stream.ReadNextChar();
                // TODO : заполнять статистику с использованием метода IncStatistic. Учёт букв - регистрозависимый.
                var buff = ((char)sr.Read()).ToString();
                if ((buff == nx.Letter) && char.IsLetter(Convert.ToChar(buff)))
                {
                    lstats.Add(nx);
                }

                nx.Count  = 1;
                nx.Letter = buff;
                //Console.WriteLine(nx.Letter);
                //if (char.IsLetter(Convert.ToChar(buff)))
            }

            return(lstats);
        }
Example #2
0
        /// <summary>
        /// Ф-ция возвращает экземпляр потока с уже загруженным файлом для последующего посимвольного чтения.
        /// </summary>
        /// <param name="fileFullPath">Полный путь до файла для чтения</param>
        /// <returns>Поток для последующего чтения.</returns>
        private static ReadOnlyStream GetInputStream(string fileFullPath)
        {
            ReadOnlyStream nx = new ReadOnlyStream(fileFullPath);

            nx.fileFullPath = fileFullPath;
            // FileStream sr = new FileStream(fileFullPath, FileMode.OpenOrCreate);
            // nx.fstream = sr;
            return(nx);
        }
Example #3
0
        /// <summary>
        /// Программа принимает на входе 2 пути до файлов.
        /// Анализирует в первом файле кол-во вхождений каждой буквы (регистрозависимо). Например А, б, Б, Г и т.д.
        /// Анализирует во втором файле кол-во вхождений парных букв (не регистрозависимо). Например АА, Оо, еЕ, тт и т.д.
        /// По окончанию работы - выводит данную статистику на экран.
        /// </summary>
        /// <param name="args">Первый параметр - путь до первого файла.
        /// Второй параметр - путь до второго файла.</param>
        static void Main(string[] args)
        {
            string path = @"C:\Test\mxc.txt";
            //string path2 = @"C:\Test\mxc2.txt";

            ReadOnlyStream inputStream1 = GetInputStream(path);


            IList <LetterStats> letterStats = FillLetterStatsDouble(inputStream1);
            // IList<LetterStats> letterStats = FillLetterStatsDouble(inputStream1);



            var removeletterd = RemoveCharStatsByType(letterStats, CharType.Consonants);

            IList <LetterStats> LetterStats_grouped = GroupStats(letterStats);   // группа статистики
            IList <LetterStats> lstatsremoved       = GroupStats(removeletterd); //  удаленные гласные или согласные группами



            foreach (var result in LetterStats_grouped)
            {
                Console.WriteLine("Name: {0}, Count: {1}", result.Letter, result.Count);
            }



            foreach (var result in lstatsremoved)
            {
                Console.WriteLine("NameDeleted: {0}, Countdeleted: {1}", result.Letter, result.Count);
            }


            //  IList<LetterStats> LetterStats_groupedStats = FillLetterStats_groupedStats(inputStream2);

            RemoveCharStatsByType(letterStats, CharType.Vowel);
            // RemoveCharStatsByType(LetterStats_groupedStats, CharType.Consonants);

            //   PrintStatistic(letterStats);
            //  PrintStatistic(LetterStats_groupedStats);*/

            // TODO : Необжодимо дождаться нажатия клавиши, прежде чем завершать выполнение программы.
            Console.ReadLine();
        }