我被困在这一段很长一段时间,我想知道是否有人可以帮助我。我怎样才能编写一个程序来计算C ++中加密的Caesar Cypher文件的移位值?我的任务是取每个小写字母并计算每个字母的使用次数,然后找出最常见的字符。我知道我可以用char和int的映射来做到这一点。但后来我不得不回到那封信,把它改成字母'e'。使用地图,无法搜索值。我认为唯一的方法是矢量矢量,但我不知道如何再次找到这些字母。有没有人知道更好的方法,或者我怎么能用矢量来完成这个?
答案 0 :(得分:1)
你需要的是一个大小为26的向量(每个字符一个),其中A的索引为0,Z的索引为25。
浏览密文并在向量中增加指定字符索引的值。
当您浏览完所有密文后,请浏览向量并检查最高值。这可能是角色E。
现在你取索引并用4减去(E的索引)。
这会产生移位值。
假设20的计数最高,那么你的班次值是16。
答案 1 :(得分:1)
你可以这样。
char
键和int
值创建地图。所有字母和值0 循环遍历整个缓冲区,直到每个字符的结尾递增值为1。同时保持max
变量存储具有最大值的字符的密钥ha。
在循环结束时max
变量将指向e。
max
中减去4将为您提供此密码的移位值。如果它是负数,那么你可以添加26.(如在模块26中的这个计算)