[問題] 用C++撰寫加密法
各位前輩好,小弟是程式新手,目前遇到了點困難
我打算用C++撰寫一個加密法
我的想法是這樣
string ANS;//建立一個字串陣列ANS儲存輸入的明文
string password;//建立一個字串password用來儲存最後的密文
char word[99] = { 'a','b','c','d','e','f','g'
,'h','i','j','k','l','m','n','o'
,'p','q','r','s','t','u','v'
,'w','x','y','z' };
//建立一個字元陣列word,裡面包含26個英文字母,每個字母對應一個欄位
(設99是因為不知道為什麼,給程式自動判斷長度會輸出亂碼,[26]也是一樣的結果)
int key=2;//建立金鑰key=2,代表要將輸入明文字母往後推算2個字母
cout << "請輸入明文:" << "\n";
cin >> ANS;
for (int howlong = 0; howlong<ANS.size(); howlong++)
{
for (int i = 0; ANS[howlong] != word[i]; i++)
{
if (ANS[howlong] = word[i])
{
password[howlong] = word[i + key];
}
}
}
做兩次的for迴圈,第一次是判斷這個明文有多長,並且用一個howlong來判斷現在是ANS
的第幾個欄位
第二次的迴圈是判斷現在的ANS欄位是否等於word中的任一字母
最後如果ANS[howlong]的字母=word[i]的字母,就將word的欄位後推key=2個,並將內容丟
到password的欄位中
cout << "\n" << "明文:" << ANS << "\n" << "\n";
cout << "密文:" << password << "\n" << "\n";
cout << "金鑰:" << key << "\n" << "\n";
system("pause");
return 0;
但是最後我做輸出時,password仍然是空的,請問我哪裡做錯了?
感謝
------------------------------------------------------------------------------
感謝版上各位的幫助
我做出來了
做出來的程式已經大大超過老師的需求
真正實作後才發現有很多觀念上的錯誤,也學到了很多
最後再請教幾個小小的問題,請問能夠將string陣列中的內容一次輸出嗎?
因為我現在是一個字一個字做輸出(cout<<password[0] << password[1]....)
這樣key感覺滿煩的
以及
為何用char輸出password字串會變成亂碼?
我已經給了足夠的大小,用string就不會有這個問題
我直接cout<<word,確實能直接把字母依序列出
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.184.18.42
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1489310892.A.19C.html
推
03/12 17:36, , 1F
03/12 17:36, 1F
剛剛試了,password仍然是空的
※ 編輯: d630200x (111.184.18.42), 03/12/2017 17:38:47
→
03/12 17:54, , 2F
03/12 17:54, 2F
→
03/12 17:55, , 3F
03/12 17:55, 3F
→
03/12 17:56, , 4F
03/12 17:56, 4F
→
03/12 17:56, , 5F
03/12 17:56, 5F
→
03/12 17:56, , 6F
03/12 17:56, 6F
→
03/12 17:58, , 7F
03/12 17:58, 7F
所以是代表我的程式從頭到尾都沒有跳進if裡面嗎?
這邊的觀念我不太清楚,迴圈不是會做動作直到達到條件嗎?
我給予的條件是如果howlong不等於i,i就會+到等於howlong,然後如果兩者相等,就輸
出至password,為什麼程式反而會先跳出迴圈?
→
03/12 18:01, , 8F
03/12 18:01, 8F
→
03/12 18:01, , 9F
03/12 18:01, 9F
→
03/12 18:01, , 10F
03/12 18:01, 10F
我這邊沒注意到,我在想辦法解決,我自己本身是想要把一段冗長的判斷工作交給電腦,
試試看我自己想的這種寫法而已
※ 編輯: d630200x (111.184.18.42), 03/12/2017 18:17:57
推
03/12 18:27, , 11F
03/12 18:27, 11F
→
03/12 18:28, , 12F
03/12 18:28, 12F
→
03/12 18:28, , 13F
03/12 18:28, 13F
→
03/12 18:30, , 14F
03/12 18:30, 14F
→
03/12 18:30, , 15F
03/12 18:30, 15F
推
03/12 19:41, , 16F
03/12 19:41, 16F
→
03/12 19:42, , 17F
03/12 19:42, 17F
→
03/12 19:43, , 18F
03/12 19:43, 18F
推
03/12 19:49, , 19F
03/12 19:49, 19F
→
03/12 19:49, , 20F
03/12 19:49, 20F
推
03/13 10:23, , 21F
03/13 10:23, 21F
→
03/13 10:23, , 22F
03/13 10:23, 22F
→
03/13 10:24, , 23F
03/13 10:24, 23F
→
03/13 12:51, , 24F
03/13 12:51, 24F
→
03/13 12:51, , 25F
03/13 12:51, 25F
※ 編輯: d630200x (111.184.18.42), 03/13/2017 19:17:01
※ 編輯: d630200x (111.184.18.42), 03/13/2017 19:17:32
※ 編輯: d630200x (111.184.18.42), 03/13/2017 19:21:57
※ 編輯: d630200x (111.184.18.42), 03/13/2017 19:24:45
推
03/13 19:43, , 26F
03/13 19:43, 26F
→
03/13 19:43, , 27F
03/13 19:43, 27F
→
03/13 19:44, , 28F
03/13 19:44, 28F
→
03/13 19:44, , 29F
03/13 19:44, 29F
→
03/13 19:45, , 30F
03/13 19:45, 30F
→
03/13 19:45, , 31F
03/13 19:45, 31F
→
03/13 19:46, , 32F
03/13 19:46, 32F
→
03/13 19:46, , 33F
03/13 19:46, 33F
→
03/13 19:47, , 34F
03/13 19:47, 34F
→
03/13 19:48, , 35F
03/13 19:48, 35F
→
03/13 19:48, , 36F
03/13 19:48, 36F
→
03/13 19:49, , 37F
03/13 19:49, 37F
→
03/13 19:50, , 38F
03/13 19:50, 38F
好的,感謝解答
※ 編輯: d630200x (111.184.18.42), 03/13/2017 19:56:27
推
03/15 14:18, , 39F
03/15 14:18, 39F
→
03/15 14:19, , 40F
03/15 14:19, 40F
推
03/15 23:40, , 41F
03/15 23:40, 41F
→
03/15 23:50, , 42F
03/15 23:50, 42F
推
03/16 17:25, , 43F
03/16 17:25, 43F