Зашифровать-расшифровать текст с помощью шифра Цезаря - C#

Узнай цену своей работы

Формулировка задачи:

Задание такое - текст из файла Прізвище1.txt зашифровать в Прізвище2.txt, а потом дешифровать из Прізвище2.txt в Прізвище3.txt. Люди, подскажите, почему код вроде правильный написанный, но вот дешифрование не работает. То есть зашифрованный текст из Прізвище2.txt в Прізвище3.txt тупо записывается без расшифрования.
 string small = "abcdefghijklmnopqrstuvwxyz", big = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            string[] imoN = new string[26];
            string[] imoZ = new string[26];
            int x, q = 0, key = 0;
            Console.WriteLine("Кодування файлу методом Цезаря...\n");
            StreamReader s = new StreamReader(File.Open(@"e:\Прізвище1.txt", FileMode.Open));
            string c = s.ReadToEnd();
            StreamWriter sw = new StreamWriter(@"e:\Прізвище2.txt", true, Encoding.Default);
            for (int j = 0; j < c.Length; j++)
            {
                if (c[j] == ' ')
                    sw.Write(string.Format(" "));
                if (c[j] == '\n')
                    sw.Write(string.Format("\n"));
                for (int i = 0; i <= 25; i++)
                {
                    x = (i + 5) % 26;
                    if (c[j] == small[i])
                        sw.Write(string.Format(@"{0}", small[x]));
                    if (c[j] == big[i])
                        sw.Write(string.Format(@"{0}", big[x]));
                }
            }
            for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
            {
                float j = 0.0f;
                for (int i = 0; i < c.Length; i++)
                {
                    if (c[i] == ch || c[i] == ch1)
                        ++j;
                }
                imoN[q] = Convert.ToString(j / c.Length);
                ++q;
            }
            sw.Close();
            StreamReader cs = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
            string ss = cs.ReadToEnd();
            q = 0;
            for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
            {
                float j = 0.0f;
                for (int i = 0; i < ss.Length; i++)
                {
                    if (ss[i] == ch || ss[i] == ch1)
                        ++j;
                }
                imoZ[q] = Convert.ToString(j / c.Length);
                ++q;
            }
            for (int r = 0; r < imoZ.Length; r++)
            {
                if (imoN[25] == imoZ[r])
                {
                    for (int i = 0; i <= 25; i++)
                    {
                        if (small[i] == small[r])
                            key = (26 + i - 25) % 26;
                    }
                }
            }
            Console.Write("Key={0}\n", key);
            cs.Close();
            StreamReader sd = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
            string cd = sd.ReadToEnd();
            StreamWriter sq = new StreamWriter(@"e:\Прізвище3.txt", true, Encoding.Default);
            for (int j = 0; j < cd.Length; j++)
            {
                if (cd[j] == ' ')
                    sq.Write(string.Format(" "));
                if (cd[j] == '\n')
                    sq.Write(string.Format("\n"));
                for (int i = 0; i <= 25; i++)
                {
                    x = (i + 26 - key) % 26;
                    if (cd[j] == small[i])
                        sq.Write(string.Format(@"{0}", small[x]));
                    if (cd[j] == big[i])
                        sq.Write(string.Format(@"{0}", big[x]));
                }
            }
            sq.Close();
            Console.WriteLine("\nФайл для кодування: e:\\Прізвище1.txt\nЗакодований файл: e:\\Прізвище2.txt\nРозшифрований файл: e:\\Прізвище3.txt");
            Console.Read();

Решение задачи: «Зашифровать-расшифровать текст с помощью шифра Цезаря»

textual
Листинг программы
string small = "abcdefghijklmnopqrstuvwxyz", big = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            string[] imoN = new string[26];
            string[] imoZ = new string[26];
            int x, q = 0, key = 0;
            Console.WriteLine("Кодування файлу методом Цезаря...\n");
            StreamReader s = new StreamReader(File.Open(@"e:\Прізвище1.txt", FileMode.Open));
            string c = s.ReadToEnd();
            StreamWriter sw = new StreamWriter(@"e:\Прізвище2.txt", true, Encoding.Default);
            for (int j = 0; j < c.Length; j++)
            {
                if (c[j] == ' ')
                    sw.Write(string.Format(" "));
                if (c[j] == '\n')
                    sw.Write(string.Format("\n"));
                for (int i = 0; i <= 25; i++)
                {
                    x = (i + 5) % 26;
                    if (c[j] == small[i])
                        sw.Write(string.Format(@"{0}", small[x]));
                    if (c[j] == big[i])
                        sw.Write(string.Format(@"{0}", big[x]));
                }
            }
            for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
            {
                float j = 0.0f;
                for (int i = 0; i < c.Length; i++)
                {
                    if (c[i] == ch || c[i] == ch1)
                        ++j;
                }
                imoN[q] = Convert.ToString(j / c.Length);
                ++q;
            }
            sw.Close();
            StreamReader cs = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
            string ss = cs.ReadToEnd();
            q = 0;
            for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
            {
                float j = 0.0f;
                for (int i = 0; i < ss.Length; i++)
                {
                    if (ss[i] == ch || ss[i] == ch1)
                        ++j;
                }
                imoZ[q] = Convert.ToString(j / c.Length);
                ++q;
            }
            for (int r = 0; r < imoZ.Length; r++)
            {
                if (imoN[25] == imoZ[r])
                {
                    for (int i = 0; i <= 25; i++)
                    {
                        if (small[i] == small[r])
                            key = (26 + i - 25) % 26;
                    }
                }
            }
            Console.Write("Key={0}\n", key);
            cs.Close();
            StreamReader sd = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
            string cd = sd.ReadToEnd();
            for (int j = 0; j < cd.Length; j++)
            {
                if (cd[j] == ' ')
                    sq.Write(string.Format(" "));
                if (cd[j] == '\n')
                    sq.Write(string.Format("\n"));
                for (int i = 0; i <= 25; i++)
                {
                    x = (i + 26 - key) % 26;
                    if (cd[j] == small[i])
                        sq.Write(string.Format(@"{0}", small[x]));
                    if (cd[j] == big[i])
                        sq.Write(string.Format(@"{0}", big[x]));
                }
            }
            StreamWriter sq = new StreamWriter(@"e:\Прізвище3.txt", true, Encoding.Default);
            sq.Close();
            Console.WriteLine("\nФайл для кодування: e:\\Прізвище1.txt\nЗакодований файл: e:\\Прізвище2.txt\nРозшифрований файл: e:\\Прізвище3.txt");
            Console.Read();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5