c#字符移位/消息解码器

时间:2013-07-16 17:41:29

标签: c# loops character-encoding streamreader

我被困在额外的学分课程上。它是:

编写一个程序,使用“字母移位”解码从文本文件中读取的秘密消息。 你必须:

1。)使用StreamReader从附加的MessageIn.txt文件中读取编码消息(参见附带的演示), 2.)计算文件中每个字符的实例, 3.)消息中最常见的字符应为“E”。使用此信息计算班次的数量, 4.)打印出已解码的消息。

他将更改编码的.txt消息,因此我们无法找到最常用的字母,因为我们必须编写代码来查找最常用的字符。

我现在拥有的是:

namespace Assign_14
{
    class Program
    {
    private static StreamReader inFile;

    static void Main(string[] args)
    {
        try
        {
            inFile = new StreamReader("MessageIN.txt");
            string s = inFile.ReadLine();

            int[] freq = new int[26];
            for (int i = 0; i < s.Length; i++)
            {
                string temp = s.Substring(i, 1);
                int itemp = (int)temp.ToCharArray()[0];

                freq[itemp - 65]++;
            }

            for (int i = 0; i < 26; i++)
            {
                Console.WriteLine(i + " " + freq[i]);
            }
        }
        catch (System.IO.IOException exc)
        {
            Console.WriteLine("ERROR");
        }

    }
}

} 如果有人能帮助我做下一步该做的事情会很棒。如果有人完成并解释他们是如何得到它的,我会给他们买一个他们选择的10美元或更少的蒸汽游戏。

1 个答案:

答案 0 :(得分:0)

虽然我不认为发布答案代码为你做作业是合适的,但我会给你一个指针,如果你考虑大写和小写字母,那么freq数组应该大于26你也可以设置一个变量maxCount = 0,maxIndex = 0,并写一个for循环来遍历你的freq数组并找到最大值。如果该值大于当前的maxCount,请同时设置maxCount和maxIndex。最后,e的ASCII码和你的maxIndex之间的差异可以让你转变。