static void Main(string[] args) { Console.OutputEncoding = Encoding.UTF8; //RU Console.WriteLine("RU"); String textRU = ""; Regex patternRU = new Regex(@"[А-Яа-я]"); Alphabets alphabet = new Alphabets(); String resultTextRU = ""; using (StreamReader sr = new StreamReader("text.txt")) { textRU = (sr.ReadToEnd()); MatchCollection matches = patternRU.Matches(textRU); foreach (Match match in matches) { resultTextRU += match; } //text = text.Replace("—", ""); //text = text.Replace("-", ""); //text = text.Replace(":", ""); //text = text.Replace("«", ""); //text = text.Replace("»", ""); //text = text.Replace("?", ""); //text = text.Replace("!", ""); //text = text.Replace(".", ""); //text = text.Replace(",", ""); //text = text.Replace("\r\n", ""); //text = text.Replace(" ", ""); } double kirEntropy = alphabet.EntropySennon(resultTextRU, alphabet.Cyrillic); Console.WriteLine(); Console.WriteLine("Энтропия русского языка по Шеннону:" + kirEntropy); Console.WriteLine("____________________________________"); //BinRu Console.WriteLine("BIN RU"); String textBinRu = alphabet.GetBytes(resultTextRU); Regex patternBin = new Regex(@"[0-1]"); String resultTextBinRU = ""; MatchCollection matchesBinRu = patternBin.Matches(textBinRu); foreach (Match match in matchesBinRu) { resultTextBinRU += match; } double binRuEntopy = alphabet.EntropySennon(resultTextBinRU, alphabet.Binary); Console.WriteLine("Энтропия bin Ru по Шеннону:" + binRuEntopy); Console.WriteLine("____________________________________"); //En Console.WriteLine("EN"); String textEn = ""; Regex patternEn = new Regex(@"[A-Za-z]"); String resultTextEn = ""; using (StreamReader sr = new StreamReader("textEN.txt")) { textEn = (sr.ReadToEnd()); MatchCollection matches = patternEn.Matches(textEn); foreach (Match match in matches) { resultTextEn += match; } } double enEntropy = alphabet.EntropySennon(resultTextEn, alphabet.Latin); Console.WriteLine(); Console.WriteLine("Энтропия английского языка по Шеннону:" + enEntropy); Console.WriteLine("____________________________________"); //BinEn Console.WriteLine("Bin EN"); String textBinEn = alphabet.GetBytes(resultTextEn); String resultTextBinEN = ""; MatchCollection matchesBinEn = patternBin.Matches(textBinEn); foreach (Match match in matchesBinEn) { resultTextBinEN += match; } double binEnEntopy = alphabet.EntropySennon(resultTextBinEN, alphabet.Binary); Console.WriteLine("Энтропия bin En по Шеннону:" + binEnEntopy); Console.WriteLine("____________________________________"); //В string myFIO = "Кравцова Диана Вячеславовна"; string myFioEn = "Kravtsova Diana Vyacheslavovna"; String myFIOBinRu = alphabet.GetBytes(myFIO); String myFIOBinEn = alphabet.GetBytes(myFioEn); Console.WriteLine("Количество информации RU:" + alphabet.countInf(kirEntropy, myFIO.Length)); Console.WriteLine("Количество информации RU bin:" + alphabet.countInf(binRuEntopy, myFIOBinRu.Length)); byte[] bytesASCIIMyRu = Encoding.ASCII.GetBytes(myFIO); string ASCIIMyRu = ""; foreach (var b in bytesASCIIMyRu) { ASCIIMyRu += b; } Console.WriteLine("Количество информации RU ASCII:" + alphabet.countInf(binRuEntopy, ASCIIMyRu.Length)); Console.WriteLine("Количество информации EN:" + alphabet.countInf(enEntropy, myFioEn.Length)); Console.WriteLine("Количество информации EN bin:" + alphabet.countInf(binEnEntopy, myFIOBinEn.Length)); byte[] bytesASCIIMyEn = Encoding.ASCII.GetBytes(myFioEn); string ASCIIMyEn = ""; foreach (var b in bytesASCIIMyEn) { ASCIIMyEn += b; } Console.WriteLine("Количество информации EN ASCII:" + alphabet.countInf(binEnEntopy, ASCIIMyEn.Length)); //Г Console.WriteLine("RU Error 0,1: " + alphabet.countInformationWithMistake(binRuEntopy, ASCIIMyRu.Length, 0.9)); Console.WriteLine("RU Error 0,5: " + alphabet.countInformationWithMistake(binRuEntopy, ASCIIMyRu.Length, 0.5)); Console.WriteLine("RU Error 1: " + alphabet.countInformationWithMistake(binRuEntopy, ASCIIMyRu.Length, 1)); Console.WriteLine("EN Error 0,1: " + alphabet.countInformationWithMistake(binEnEntopy, ASCIIMyEn.Length, 0.9)); Console.WriteLine("EN Error 0,5: " + alphabet.countInformationWithMistake(binEnEntopy, ASCIIMyEn.Length, 0.5)); Console.WriteLine("EN Error 1: " + alphabet.countInformationWithMistake(binEnEntopy, ASCIIMyEn.Length, 1)); Console.ReadKey(); }
static void Main(string[] args) { int choose = -1; Console.OutputEncoding = Encoding.UTF8; Regex patternUnicode = new Regex(@"\p{L}"); Alphabets alphabet = new Alphabets(); Console.WriteLine("Choose mod (1 -> 4lab, 3 -> 5lab, (2lab)default)"); while (choose != 0) { int.TryParse(Console.ReadLine(), out choose); String resultText = ""; Console.Clear(); switch (choose) { case 1: Console.WriteLine("Lab4"); String text; double kirEntropy; for (int i = 0; i < 3; i++) { resultText = ""; using (StreamReader sr = new StreamReader($"{i}.txt")) { text = (sr.ReadToEnd()); MatchCollection matches = patternUnicode.Matches(text); foreach (Match match in matches) { resultText += match; } } kirEntropy = alphabet.EntropySennon(resultText, alphabet.Bel); Console.WriteLine(); Console.WriteLine("Энтропия lab4 языка по Шеннону:" + kirEntropy); Console.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); } break; case 2: break; case 0: break; default: //LT Console.WriteLine("LT"); String textLT; String resultTextLT; using (StreamReader sr = new StreamReader("textLT.txt")) { text = (sr.ReadToEnd()); MatchCollection matches = patternUnicode.Matches(text); foreach (Match match in matches) { resultText += match; } } kirEntropy = alphabet.EntropySennon(resultText, alphabet.Litv); Console.WriteLine(); Console.WriteLine("Энтропия литовского языка по Шеннону:" + kirEntropy); Console.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); Console.WriteLine("BIN LT"); String textBinLt = alphabet.GetBytes(resultText); Regex patternBin = new Regex(@"[0-1]"); String resultTextBinLT = ""; MatchCollection matchesBinLt = patternBin.Matches(textBinLt); foreach (Match match in matchesBinLt) { resultTextBinLT += match; } double binLtEntopy = alphabet.EntropySennon(resultTextBinLT, alphabet.Binary); Console.WriteLine("Энтропия bin Lt по Шеннону:" + binLtEntopy); Console.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //En Console.WriteLine("MK"); String textMk; String resultTextMk = ""; using (StreamReader sr = new StreamReader("textMK.txt")) { textMk = (sr.ReadToEnd()); MatchCollection matches = patternUnicode.Matches(textMk); foreach (Match match in matches) { resultTextMk += match; } } double enEntropy = alphabet.EntropySennon(resultTextMk, alphabet.Maken); Console.WriteLine(); Console.WriteLine("Энтропия македонского языка по Шеннону:" + enEntropy); Console.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //BinEn Console.WriteLine("Bin MK"); String textBinMk = alphabet.GetBytes(resultTextMk); String resultTextBinMK = ""; MatchCollection matchesBinMk = patternBin.Matches(textBinMk); foreach (Match match in matchesBinMk) { resultTextBinMK += match; } double binEnEntopy = alphabet.EntropySennon(resultTextBinMK, alphabet.Binary); Console.WriteLine("Энтропия bin Mk по Шеннону:" + binEnEntopy); Console.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //В string myFIOMK = "Селитски Данил Евгениевич"; string myFioLT = "Selitsky Danil Evgenievich"; String myFIOBinLt = alphabet.GetBytes(myFIOMK); String myFIOBinMk = alphabet.GetBytes(myFioLT); Console.WriteLine("Количество информации LT:" + alphabet.countInf(kirEntropy, myFIOMK.Length)); Console.WriteLine("Количество информации LT bin:" + alphabet.countInf(binLtEntopy, myFIOBinLt.Length)); byte[] bytesASCIIMyLt = Encoding.ASCII.GetBytes(myFIOMK); string ASCIIMyLt = ""; foreach (var b in bytesASCIIMyLt) { ASCIIMyLt += b; } Console.WriteLine("Количество информации LT ASCII:" + alphabet.countInf(binLtEntopy, ASCIIMyLt.Length)); Console.WriteLine("Количество информации MK:" + alphabet.countInf(enEntropy, myFioLT.Length)); Console.WriteLine("Количество информации MK bin:" + alphabet.countInf(binEnEntopy, myFIOBinMk.Length)); byte[] bytesASCIIMyMk = Encoding.ASCII.GetBytes(myFioLT); string ASCIIMyMk = ""; foreach (var b in bytesASCIIMyMk) { ASCIIMyMk += b; } Console.WriteLine("Количество информации MK ASCII:" + alphabet.countInf(binEnEntopy, ASCIIMyMk.Length)); //Г Console.WriteLine("LT Error 0,1: " + alphabet.countInformationWithMistake(binLtEntopy, ASCIIMyLt.Length, 0.9)); Console.WriteLine("LT Error 0,5: " + alphabet.countInformationWithMistake(binLtEntopy, ASCIIMyLt.Length, 0.5)); Console.WriteLine("LT Error 1: " + alphabet.countInformationWithMistake(binLtEntopy, ASCIIMyLt.Length, 1)); Console.WriteLine("MK Error 0,1: " + alphabet.countInformationWithMistake(binEnEntopy, ASCIIMyMk.Length, 0.9)); Console.WriteLine("MK Error 0,5: " + alphabet.countInformationWithMistake(binEnEntopy, ASCIIMyMk.Length, 0.5)); Console.WriteLine("MK Error 1: " + alphabet.countInformationWithMistake(binEnEntopy, ASCIIMyMk.Length, 1)); break; } Console.WriteLine("Choose mod (1 -> (2lab)default, 2 -> 4lab, 3 -> 5lab)"); } }