Шифр StringBuilder: Программа не хочет работать с русским алфавитом - C#

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

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

Ребят, почему программа не хочет работать с русским алфавитом(224-255), а с английским работает(97-122)
Листинг программы
  1. using System;
  2. using System.Text;
  3. class Test
  4. {
  5. static void Main()
  6. {
  7. string originalText = "ЗАЩИТИМ ЗАМОК КОРОЛЯ"; // текст для шифрования
  8. Console.WriteLine(originalText);
  9. string plainText = Playfair.Prepare(originalText);
  10. Console.WriteLine(plainText);
  11. Console.ReadLine();
  12. }
  13. }
  14. public class Playfair
  15. {
  16. // Prepare удаляет все числа, пунктуацию, пробелы, верхний регистр преобразуется в нижний
  17. public static string Prepare(string originalText)
  18. {
  19. int length = originalText.Length;
  20. originalText = originalText.ToLower();
  21. StringBuilder sb = new StringBuilder();
  22. for(int i = 0; i < length; i++)
  23. {
  24. char c = originalText[i];
  25. if (c >= 224 && c <= 255)
  26. {
  27. // Если повторяющиеся буквы текста образуют одну пару для шифрования, то между буквами вставляется буква X
  28. if (sb.Length % 2 == 1 && sb[sb.Length - 1] == c)
  29. {
  30. sb.Append('х');
  31. }
  32. sb.Append(c);
  33. }
  34. }
  35. // Если строка является нечетной длины, добавить 'х'
  36. if (sb.Length % 2 == 1)
  37. {
  38. sb.Append('x');
  39. }
  40. return sb.ToString(); //вернем получившуюся строку
  41. }

Решение задачи: «Шифр StringBuilder: Программа не хочет работать с русским алфавитом»

textual
Листинг программы
  1. // Changed: 2014 10 02 6:54 PM : 5665tm
  2.  
  3. using System;
  4. using System.Text;
  5.  
  6. internal class Test
  7. {
  8.     private static void Main()
  9.     {
  10.         string originalText = "My Car This Is Best Lol meeeeow"; // текст для шифрования
  11.         Console.WriteLine(originalText);
  12.         string plainText = Playfair.Prepare(originalText);
  13.         Console.WriteLine(plainText);
  14.  
  15.         originalText = "Защитим заМок короляяяя "; // текст для шифрования
  16.         Console.WriteLine(originalText);
  17.         plainText = Playfair.Prepare(originalText, false);
  18.         Console.WriteLine(plainText);
  19.  
  20.         Console.ReadLine();
  21.     }
  22. }
  23.  
  24. public static class Playfair
  25. {
  26.     // Prepare удаляет все числа, пунктуацию, пробелы, верхний регистр преобразуется в нижний
  27.     public static string Prepare(string originalText, bool eng = true)
  28.     {
  29.         int length = originalText.Length;
  30.         originalText = originalText.ToLower();
  31.         var sb = new StringBuilder();
  32.  
  33.         int min = eng ? 97 : 1040;
  34.         int max = eng ? 122 : 1103;
  35.  
  36.         for (int i = 0; i < length; i++)
  37.         {
  38.             char c = originalText[i];
  39.             if (c >= min && c <= max)
  40.             {
  41.                 // Если повторяющиеся буквы текста образуют одну пару для шифрования, то между буквами вставляется буква X
  42.                 if (sb.Length%2 == 1 && sb[sb.Length - 1] == c)
  43.                 {
  44.                     sb.Append('х');
  45.                 }
  46.                 sb.Append(c);
  47.             }
  48.         }
  49.  
  50.         // Если строка является нечетной длины, добавить 'х'
  51.         if (sb.Length%2 == 1)
  52.         {
  53.             sb.Append('x');
  54.         }
  55.  
  56.         return sb.ToString(); //вернем получившуюся строку    
  57.     }
  58. }

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


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

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

15   голосов , оценка 4.2 из 5

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

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

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