0

多かれ少なかれ、単純な暗号化/復号化プログラムを C++ で作成しようとしています。現在、私は他の基本的な機能のほとんどを書いています。ただし、配列を自分がやりたいことと正確に統合する方法がわかりません。

これは C++ での私の最初のプログラムなので、ご容赦ください。

基本的に、ユーザーに一連の文字 a ~ z および A ~ Z を入力してもらいたいのですが、配列を使用して各文字に値を割り当てたいと考えています。 .. 'A', 'B', 'C'} これらの各文字は、配列 a = 0、b = 1 などの位置の値を保持します。したがって、ユーザーがフレーズ entArray[] を入力すると、確認のためにフレーズをエコー バックし、式 51 - (theValueOf_enteredArray[0]) を使用します。ここで、51 は、referenceArray[] で割り当てられた値に基づく theValueOf_entArray[0] である最大値であり、ループしてこれを繰り返します。 enteredArray 内の次の文字に対するアクション。

したがって、基本的に、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 に答える