2011-12-14 81 views
0

我一直在这个很长一段时间难住,我想知道是否有人可以帮助我。我如何编写一个程序来计算C++中加密的Caesar的Cypher文件的移位值?我的任务是取每个小写字母并计算每个字母的使用次数,然后找出最常见的字符。我知道我可以用char和int的地图来做到这一点。但是,我必须回到那封信,将其改为字母'e'。有了地图,无法通过值回溯。我认为唯一的方法是矢量矢量,但我不知道如何再次找到这些字母。有谁知道更好的方法,或者我怎么可以使用矢量来完成这个?解密凯撒的塞帕尔麻烦

+0

增加26获取帮助,你也应该告诉你已经尝试了什么。 – Pradeep 2011-12-14 13:34:05

+0

我只是要求一个暗示,因为我要说的是,我不知道任何有效的方法,以在第一时间 – 2011-12-14 13:37:24

回答

1

你可以去这样。

  1. 首先在缓冲区中读取整个文件。
  2. char键和int值创建地图。带有所有字母和值0
  3. 循环遍历整个缓冲区,直到每个字符的地图结束值递增1。变量存储有最大值的字符哈哈max

  4. 循环结束max变量将指向e。

  5. max减去4会给你这个密码的偏移值。如果说到负,那么你可以(在国防部26作为这一计算)
1

所有你需要的是尺寸26的(每个字符)的向量,其中A具有索引0和Z具有索引25.

通过密文转到和载体增加数值指定字符索引。

当你浏览完所有的密文后,通过向量并检查最高值。这可能是字符E.现在你采取索引和减去4(E的索引)。

这产生偏移值。

假设20具有最高计数那么你的偏移值是16

+0

哦,我看开始!所以不是保存这封信,而是保存它的0-25位。非常感谢! – 2011-12-14 13:46:09