0

我被困在额外的学分课程作业上。这是:

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

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 美元或更少的 Steam 游戏。

4

1 回答 1

0

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

于 2013-07-16T17:54:22.387 回答