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); }
/// <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); }
/// <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(); }