Top.Mail.Ru
Ответы

Программа на C#

На вход программе подаётся английский текст, заканчивающийся точкой (символ «точка» во входных данных единственный). Текст зашифровать следующим образом: сначала определяется количество букв в самом длинном слове, обозначив полученное число К (словом называется непрерывная последовательность английских букв, слова друг от друга отделяются пробелами и запятыми, длина слова не прtвышает 20 символов). Затем проводится замена каждой анuлийской буквы на букву, следующую за ней К-ю по счету в алфавите (алфавит считается циклическим, то есть после буквой Z стоит буква А), оста-вив другие символы неизменными. Строчные буквы при этом остались строчными, а прописные - прописными. Требуется написать программу, которая будет выводить на экран зашифрованный текст и число К.

По дате
По рейтингу
Аватар пользователя
Новичок

Поправил момент с запятыми:

12345678910111213141516171819202122232425262728293031
 static int Encrypt(ref string s) 
        { 
            const string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";             
            s = s.Substring(0, s.IndexOf('.')); 
            int k = s.Split(new char[] { ' ', ',' }).Select(x => x.Length).Max(); 
            string EncryptedStr = string.Empty; 
            foreach (char c in s) 
            { 
                int CharPos = Alphabet.IndexOf(c.ToString().ToUpper()[0]); 
                if (CharPos >= 0) 
                { 
                    char EncryptedChar = Alphabet[(CharPos + k) % Alphabet.Length]; 
                    if (c.ToString().ToUpper() != c.ToString()) 
                        EncryptedChar = EncryptedChar.ToString().ToLower()[0]; 
                    EncryptedStr += EncryptedChar; 
                } 
                else 
                    EncryptedStr += c; 
            } 
            s = EncryptedStr + '.'; 
            return k; 
        } 
 
        static void Main(string[] args) 
        { 
            string s = Console.ReadLine(); 
            int k = Encrypt(ref s); 
            Console.WriteLine(k); 
            Console.WriteLine(s); 
            Console.ReadLine(); 
        }