我应该能够使用向量解码秘密消息。
我写了所有向量,可以找到第一个出现的实例。
我也一次只能找到一个矢量。
我应该可以解码像“,$]:”这样的消息(应该拼写为“ tops ”)。
我没有包括整个矢量列表,因为那样会很长:
...
sym.at(i)="$"; letr.at(i) = "o"; ++i;
sym.at(i)="]"; letr.at(i) = "p"; ++i;
sym.at(i)="}"; letr.at(i) = "q"; ++i;
sym.at(i)=";"; letr.at(i) = "r"; ++i;
sym.at(i)=":"; letr.at(i) = "s"; ++i;
sym.at(i)=","; letr.at(i) = "t"; ++i;
sym.at(i)="%"; letr.at(i) = "u"; ++i;
sym.at(i)="<"; letr.at(i) = "v"; ++i;
sym.at(i)="."; letr.at(i) = "w"; ++i;
sym.at(i)=">"; letr.at(i) = "x"; ++i;
sym.at(i)="/"; letr.at(i) = "y"; ++i;
sym.at(i)="?"; letr.at(i) = "z"; ++i;
cout << "\nEnter decrypted message: "; //asking dycypted message
cin >> message;
found = false;
for (i = 0; i < numCar; ++i) { // find letter index
if (sym.at(i) == message) {
found = true;
cout << "decrypted message is: ";
cout << letr.at(i) << endl;
}
}
...
答案 0 :(得分:0)
message == ",$]:"
循环for
中的条件sym.at(i) == message
永远不会成为true
。{li>因此,永远不会评估if
子句中的代码。 #include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string sym("$]};:,%<.>/?");
std::string let("opqrstuvwxyz");
std::string inpt;
while (std::getline(std::cin, inpt)) {
for (std::size_t i(0), ie(inpt.size()); i < ie; ++i) {
std::size_t idx = std::distance(sym.begin(), std::find(sym.begin(), sym.end(), inpt[i]));
if (idx < sym.size()) std::cout << let[idx];
}
std::cout << std::endl;
}
return 0;
}