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

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

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

Задание такое - текст из файла Прізвище1.txt зашифровать в Прізвище2.txt, а потом дешифровать из Прізвище2.txt в Прізвище3.txt. Люди, подскажите, почему код вроде правильный написанный, но вот дешифрование не работает. То есть зашифрованный текст из Прізвище2.txt в Прізвище3.txt тупо записывается без расшифрования.
Листинг программы
  1. string small = "abcdefghijklmnopqrstuvwxyz", big = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  2. string[] imoN = new string[26];
  3. string[] imoZ = new string[26];
  4. int x, q = 0, key = 0;
  5. Console.WriteLine("Кодування файлу методом Цезаря...\n");
  6. StreamReader s = new StreamReader(File.Open(@"e:\Прізвище1.txt", FileMode.Open));
  7. string c = s.ReadToEnd();
  8. StreamWriter sw = new StreamWriter(@"e:\Прізвище2.txt", true, Encoding.Default);
  9. for (int j = 0; j < c.Length; j++)
  10. {
  11. if (c[j] == ' ')
  12. sw.Write(string.Format(" "));
  13. if (c[j] == '\n')
  14. sw.Write(string.Format("\n"));
  15. for (int i = 0; i <= 25; i++)
  16. {
  17. x = (i + 5) % 26;
  18. if (c[j] == small[i])
  19. sw.Write(string.Format(@"{0}", small[x]));
  20. if (c[j] == big[i])
  21. sw.Write(string.Format(@"{0}", big[x]));
  22. }
  23. }
  24. for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
  25. {
  26. float j = 0.0f;
  27. for (int i = 0; i < c.Length; i++)
  28. {
  29. if (c[i] == ch || c[i] == ch1)
  30. ++j;
  31. }
  32. imoN[q] = Convert.ToString(j / c.Length);
  33. ++q;
  34. }
  35. sw.Close();
  36. StreamReader cs = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
  37. string ss = cs.ReadToEnd();
  38. q = 0;
  39. for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
  40. {
  41. float j = 0.0f;
  42. for (int i = 0; i < ss.Length; i++)
  43. {
  44. if (ss[i] == ch || ss[i] == ch1)
  45. ++j;
  46. }
  47. imoZ[q] = Convert.ToString(j / c.Length);
  48. ++q;
  49. }
  50. for (int r = 0; r < imoZ.Length; r++)
  51. {
  52. if (imoN[25] == imoZ[r])
  53. {
  54. for (int i = 0; i <= 25; i++)
  55. {
  56. if (small[i] == small[r])
  57. key = (26 + i - 25) % 26;
  58. }
  59. }
  60. }
  61. Console.Write("Key={0}\n", key);
  62. cs.Close();
  63. StreamReader sd = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
  64. string cd = sd.ReadToEnd();
  65. StreamWriter sq = new StreamWriter(@"e:\Прізвище3.txt", true, Encoding.Default);
  66. for (int j = 0; j < cd.Length; j++)
  67. {
  68. if (cd[j] == ' ')
  69. sq.Write(string.Format(" "));
  70. if (cd[j] == '\n')
  71. sq.Write(string.Format("\n"));
  72. for (int i = 0; i <= 25; i++)
  73. {
  74. x = (i + 26 - key) % 26;
  75. if (cd[j] == small[i])
  76. sq.Write(string.Format(@"{0}", small[x]));
  77. if (cd[j] == big[i])
  78. sq.Write(string.Format(@"{0}", big[x]));
  79. }
  80. }
  81. sq.Close();
  82. Console.WriteLine("\nФайл для кодування: e:\\Прізвище1.txt\nЗакодований файл: e:\\Прізвище2.txt\nРозшифрований файл: e:\\Прізвище3.txt");
  83. Console.Read();

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

textual
Листинг программы
  1. string small = "abcdefghijklmnopqrstuvwxyz", big = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  2.             string[] imoN = new string[26];
  3.             string[] imoZ = new string[26];
  4.             int x, q = 0, key = 0;
  5.             Console.WriteLine("Кодування файлу методом Цезаря...\n");
  6.             StreamReader s = new StreamReader(File.Open(@"e:\Прізвище1.txt", FileMode.Open));
  7.             string c = s.ReadToEnd();
  8.             StreamWriter sw = new StreamWriter(@"e:\Прізвище2.txt", true, Encoding.Default);
  9.             for (int j = 0; j < c.Length; j++)
  10.             {
  11.                 if (c[j] == ' ')
  12.                     sw.Write(string.Format(" "));
  13.                 if (c[j] == '\n')
  14.                     sw.Write(string.Format("\n"));
  15.                 for (int i = 0; i <= 25; i++)
  16.                 {
  17.                     x = (i + 5) % 26;
  18.                     if (c[j] == small[i])
  19.                         sw.Write(string.Format(@"{0}", small[x]));
  20.                     if (c[j] == big[i])
  21.                         sw.Write(string.Format(@"{0}", big[x]));
  22.                 }
  23.             }
  24.             for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
  25.             {
  26.                 float j = 0.0f;
  27.                 for (int i = 0; i < c.Length; i++)
  28.                 {
  29.                     if (c[i] == ch || c[i] == ch1)
  30.                         ++j;
  31.                 }
  32.                 imoN[q] = Convert.ToString(j / c.Length);
  33.                 ++q;
  34.             }
  35.             sw.Close();
  36.             StreamReader cs = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
  37.             string ss = cs.ReadToEnd();
  38.             q = 0;
  39.             for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
  40.             {
  41.                 float j = 0.0f;
  42.                 for (int i = 0; i < ss.Length; i++)
  43.                 {
  44.                     if (ss[i] == ch || ss[i] == ch1)
  45.                         ++j;
  46.                 }
  47.                 imoZ[q] = Convert.ToString(j / c.Length);
  48.                 ++q;
  49.             }
  50.             for (int r = 0; r < imoZ.Length; r++)
  51.             {
  52.                 if (imoN[25] == imoZ[r])
  53.                 {
  54.                     for (int i = 0; i <= 25; i++)
  55.                     {
  56.                         if (small[i] == small[r])
  57.                             key = (26 + i - 25) % 26;
  58.                     }
  59.                 }
  60.             }
  61.             Console.Write("Key={0}\n", key);
  62.             cs.Close();
  63.             StreamReader sd = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
  64.             string cd = sd.ReadToEnd();
  65.             for (int j = 0; j < cd.Length; j++)
  66.             {
  67.                 if (cd[j] == ' ')
  68.                     sq.Write(string.Format(" "));
  69.                 if (cd[j] == '\n')
  70.                     sq.Write(string.Format("\n"));
  71.                 for (int i = 0; i <= 25; i++)
  72.                 {
  73.                     x = (i + 26 - key) % 26;
  74.                     if (cd[j] == small[i])
  75.                         sq.Write(string.Format(@"{0}", small[x]));
  76.                     if (cd[j] == big[i])
  77.                         sq.Write(string.Format(@"{0}", big[x]));
  78.                 }
  79.             }
  80.             StreamWriter sq = new StreamWriter(@"e:\Прізвище3.txt", true, Encoding.Default);
  81.             sq.Close();
  82.             Console.WriteLine("\nФайл для кодування: e:\\Прізвище1.txt\nЗакодований файл: e:\\Прізвище2.txt\nРозшифрований файл: e:\\Прізвище3.txt");
  83.             Console.Read();

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут