0

所以或多或少我正在尝试用 C++ 编写一个简单的加密/解密程序。现在我已经编写了大部分其他基本功能。虽然,我不确定如何将数组完全集成到我想要它做的事情中。

这是我在 C++ 中的第一个程序,所以请多多包涵。

基本上,我希望用户输入一组字符 a 到 z 和 A 到 Z 我想使用一个数组来为每个字母分配一个值,IE referenceArray[] = {'a', 'b', 'c', 。 .. 'A', 'B', 'C'} 其中每个字符都保存它们在数组中的位置值 a = 0, b = 1 等。所以当用户输入短语 entArray[] 时,它回显该短语以进行验证,然后使用公式 51 - (theValueOf_enteredArray[0]) 其中 51 是最大值,即 theValueOf_entArray[0] 基于在 referenceArray[] 中分配的值,然后我希望它循环并重复此操作enterArray 中下一个字符的操作。

所以基本上只是为了澄清我想要的输出是什么,如果 a = 0 和 Z = 51

用户输入:abcdeA 输出为:ZYXWVz

如果有人能帮忙,我可以把我现在拥有的东西发给你,但就像我说的那样,这是我必须拥有的程序的所有其他部分,这是最后一部分,真的让我难过,真的只是所涉及的数学语法

4

1 回答 1

0

您可以遍历条目数组,一旦知道当前字母的索引,就对其应用转换:

for (int i=0; i<SIZE && entArray[i] != '\0'; ++i) {
  char letter = entArray[i];
  char transformedChar = letter;
  int entIdx = getIndex(letter);
  if (entIdx >= 0) {
    int transformedIdx = 51 - entIdx;
    transformedChar = referenceArray[transformedIdx];
  }
  cout << transformedChar;
}

SIZE的大小在哪里entArray。您可能还想对 51 使用命名常量。

这里我们首先假设当前字母不能被变换(entIdx < 0),如果这个假设不成立,应用变换并得到变换位置处的字母

要获取参考数组中字母的索引:

int getIndex(char letter) {
  for (int i=0; i < 51; ++i) {
    if (referenceArray[i] == letter) {
      return i;
    }
  }
  // could not find the letter (e.g. space):
  return -1;
}

注意:您可能还想创建和填充从字母到索引的映射,以使查找更容易——map<char, int>例如,您可以使用

于 2012-04-17T20:00:57.727 回答