title: Caesar Cipher Shift (using alphabet array)
body: <p>I am currently writing a Caesar Cipher program in C# for my assignment and I am having a problem.</p>
  
  <p>I am approaching this task using an array where I store the whole alphabet and I declare a shift variable which is defined by character index in the array - the iteration of a for loop. The shift calculation is done in a foreach loop, that fetches a character from a string that is read from a text file. Foreach loop is contained within a for loop that iterates to output every possible shift.</p>
  
  <p>However, the problem is that when I try to access the character in an array by a value of my shift variable, the program doesn't seem to access the character I want, it just outputs the same character as in the original string. </p>
  
  <p>This is the code for the program:</p>
  
  <pre><code>using System; 
  using System.IO;
  
  public class caesar_shift
  {
      public static void Main()
      {
          string file = @"C:\Users\terasss2\Desktop\Programming and Data Structures\caesarShiftEncodedText.txt";      //String variable that stores a file location
          string encrypted_text = File.ReadAllText(file);     //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';
  
          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 &lt; alphabet.Length; i++)        //Start a loop which will display 25 different candidates of decipher
          {
              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 &lt;= 0)
                      shift = shift + 26;
  
                  if(shift &gt;= 26)
                      shift = shift - 26;
  
                  character = alphabet[shift];    //Set the character to a shifted letter by accessing the array element of a value shift
  
                  Console.WriteLine(character);
  
                  decoded_text = decoded_text + character; 
               }  
  
              Console.WriteLine("\nShift {0} \n {1}",i + 1, decoded_text);
  
           }
         }
  }
  </code></pre>