Подсчет статистики по файлу разными потоками - C#
Формулировка задачи:
Не смог до конца разобраться в коде. Делает ли код то, чего требует задание?
Задание: Необходимо написать программу, ведущую подсчет статистики по файлу разными потоками (количество символов, количество слов, количество строк, количество символов-цифр, слова разделяются специальными символами разделителями, задаваемыми пользователем).
Операции доступа к разделяемым ресурсам нужно осуществлять внутри критической секции. У критической секции имеется два метода: вход и выход. Весь программный код от точки входа до точки выхода принадлежит критической секции.
Код:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Threading.Tasks; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string data = File.ReadAllText("test.txt"); List<char> NotDigits = new List<char>(); List<char> NotLetters = new List<char>(); for (int i = 0; i < data.Length; i++) { char c = data[i]; if (!Char.IsLetter(c) && !NotLetters.Contains(c)) NotLetters.Add(c); if (!Char.IsDigit(c) && NotDigits.Contains(c)) NotDigits.Add(c); } var nums = data.Split(NotDigits.ToArray(), StringSplitOptions.RemoveEmptyEntries) .Select(int.Parse); string count = nums.Count().ToString(); File.WriteAllText("out.txt", count); int max = nums.Max(); int min = nums.Min(); Console.WriteLine("MAX = {0}, MIN = {1}", max, min); string[] words = data.Split(NotLetters.ToArray(), StringSplitOptions.RemoveEmptyEntries); foreach (var s in words) Console.WriteLine(s); Thread t = new Thread(CountSymb); t.Start(data); Thread t2 = new Thread(CountLine); t2.Start(data); } private void CountSymb(string data) { Console.WriteLine("{0}", data.Length); } private void CountLine(string data) { FileStream fs = new FileStream(@"D:\Test.txt"); string curLine; int count = 0; StreamReader sr = new StreamReader(fs); while ((curLine = sr.ReadLine()) != null) { Console.WriteLine(curLine); count += curLine.Length; } fs.Close(); Console.WriteLine("В файле: {0} строк", count); } } }
Решение задачи: «Подсчет статистики по файлу разными потоками»
textual
Листинг программы
if (!Char.IsDigit(c) && NotDigits.Contains(c)) NotDigits.Add(c);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д