2011-12-14 44 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