Caesar Cipher Shift (using alphabet array)

前端 未结 3 1278
遇见更好的自我
遇见更好的自我 2020-12-21 06:00

I am currently writing a Caesar Cipher program in C# for my assignment and I am having a problem.

I am approaching this task using an array where I store the whole a

3条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-21 06:30

    I played a bit with your code. The following gives you the solution, but you have to take care: you couldonly use capital letters, because theres a difference in upper and lower charts. I used the ToUpper() method. Works fine for me. I think that's what your problem was.

    public static void Main()
        {
            string encrypted_text = "BCD";     //String variable that contains the text from a file. To get the text, the method in a class SystemIO is ran to read the text. It expects a parameter, which is a file directory.
            string decoded_text = " ";
            int shift = 0;
            char character = '0';
            encrypted_text = encrypted_text.ToUpper();
    
            char[] alphabet = new char[26] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
    
            Console.WriteLine("The encrypted text is \n{0}", encrypted_text);       //Display the encrypted text
    
            for (int i = 0; i < alphabet.Length; i++)        //Start a loop which will display 25 different candidates of decipher
            {
                decoded_text = "";
                foreach (char c in encrypted_text)
                {
                    character = c;
    
                    if (character == '\'' || character == ' ')
                        continue;
    
                    shift = Array.IndexOf(alphabet, character) - i;     //Define a shift which is the index of a character in an alphabet array, take away the itteration of this loop. Store the result in a variable
                    if (shift <= 0)
                        shift = shift + 26;
    
                    if (shift >= 26)
                        shift = shift - 26;
    
    
                    decoded_text += alphabet[shift];
                }
                Console.WriteLine("\nShift {0} \n {1}", i + 1, decoded_text);
            }
        }
    

提交回复
热议问题