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

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

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

Ребят, почему программа не хочет работать с русским алфавитом(224-255), а с английским работает(97-122)
using System;
using System.Text;
 
class Test
{
    static void Main()
    {
        string originalText = "ЗАЩИТИМ ЗАМОК КОРОЛЯ"; // текст для шифрования
        Console.WriteLine(originalText);         
        string plainText = Playfair.Prepare(originalText);
        Console.WriteLine(plainText);
        Console.ReadLine(); 
    }
}
 
public class Playfair
{
 
    // Prepare удаляет все числа, пунктуацию, пробелы, верхний регистр преобразуется в нижний
    public static string Prepare(string originalText)
    {
        int length = originalText.Length;
        originalText = originalText.ToLower();
        StringBuilder sb = new StringBuilder();
     
        for(int i = 0; i < length; i++)
        {
           char c = originalText[i];
           if (c >= 224 && c <= 255)
           {
               // Если повторяющиеся буквы текста образуют одну пару для шифрования, то между буквами вставляется буква X 
              if (sb.Length % 2 == 1 && sb[sb.Length - 1] == c)
              {                                 
                 sb.Append('х');
              }
              sb.Append(c);
           }
        }
 
        // Если строка является нечетной длины, добавить 'х'
        if (sb.Length % 2 == 1)
        {
           sb.Append('x');
        }
 
        return sb.ToString(); //вернем получившуюся строку    
    }

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

textual
Листинг программы
// Changed: 2014 10 02 6:54 PM : 5665tm
 
using System;
using System.Text;
 
internal class Test
{
    private static void Main()
    {
        string originalText = "My Car This Is Best Lol meeeeow"; // текст для шифрования
        Console.WriteLine(originalText);
        string plainText = Playfair.Prepare(originalText);
        Console.WriteLine(plainText);
 
        originalText = "Защитим заМок короляяяя "; // текст для шифрования
        Console.WriteLine(originalText);
        plainText = Playfair.Prepare(originalText, false);
        Console.WriteLine(plainText);
 
        Console.ReadLine();
    }
}
 
public static class Playfair
{
    // Prepare удаляет все числа, пунктуацию, пробелы, верхний регистр преобразуется в нижний
    public static string Prepare(string originalText, bool eng = true)
    {
        int length = originalText.Length;
        originalText = originalText.ToLower();
        var sb = new StringBuilder();
 
        int min = eng ? 97 : 1040;
        int max = eng ? 122 : 1103;
 
        for (int i = 0; i < length; i++)
        {
            char c = originalText[i];
            if (c >= min && c <= max)
            {
                // Если повторяющиеся буквы текста образуют одну пару для шифрования, то между буквами вставляется буква X 
                if (sb.Length%2 == 1 && sb[sb.Length - 1] == c)
                {
                    sb.Append('х');
                }
                sb.Append(c);
            }
        }
 
        // Если строка является нечетной длины, добавить 'х'
        if (sb.Length%2 == 1)
        {
            sb.Append('x');
        }
 
        return sb.ToString(); //вернем получившуюся строку    
    }
}

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


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

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

15   голосов , оценка 4.2 из 5
Похожие ответы