文字列を 1 文字ずつ 2 次元配列に追加する方法がわかりません。
「秘密のメッセージ」を暗号化するための置換暗号を作成する一環として、私はしようとしています。
- キーワードを受け入れる
- 上記のキーワードからすべての冗長な文字を削除します
- この新しいキーワードを 5x5 配列に char ごとに追加します。
- 配列内の残りのスペースについては、アルファベット順に入力してください (一意の文字のみ。キーワードから既に入力されているものを除外することを意味します)。また、これは 5x5 の配列であるため、文字 Z を無視していることも意味します。わざわざそれをエンコードしようとはしません。
言い換えれば、私は次の効果のために何かをしようとしています:
string keyword = "PREPARATION";
string new_keyword = "PREATION"; // removed redundant letters, only unique ones remain
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXY";
string new_alphabet = "BCDFGHJKLMQSUVWXY"; //notice chars P, R, E, A, T, I, O, N are no longer present
この最初の部分は、問題なく理解できました。しかし、配列に new_keyword と new_alphabet を追加したいと思います。
0 1 2 3 4
---------------------
0| P | R | E | A | T |
---------------------
1| I | O | N | B | C |
---------------------
2| D | F | G | H | J |
---------------------
3| K | L | Q | Q | S |
---------------------
4| U | V | W | X | Y |
---------------------
最初に文字列 new_keyword が追加され、その後に文字列 new_alphabet が追加されます。したがって、この時点で、私のコードは次のようになります。
string new_keyword = "PREATION";
string new_alphabet = "BCDFGHJKLMQSUVWXY";
const int ROW = 5;
const int COL = 5;
char arr[row][col] = {0}; //initialize all values in array to 0
for(int i = 0; i < new_keyword.length(); i++)
{
arr[0][i] = new_keyword[i];
}
これまでのところ、2dim 配列に char ごとに new_keyword が入れられます。明らかに、「PREATION」は 5 文字を超える文字列ですが、プログラムはこの明らかなオーバーラップを「認識」し、残りの文字「ION」を 2 行目に追加し続けます。
arr[1][0] == 'I';
arr[1][1] == 'O';
arr[1][2] == 'N';
なぜこれを行うことを知っているのですか?
さらに、arr[1][3] で始まる new_alphabet を追加する必要があります。「new_alphabet @ arr[1][3] で追加を開始する」などのコードを明示的にコーディングすることもできますが、これは明らかに「動的」である必要があり、 new_keyword の直後に要素への追加を開始します。どうすればこれを行うことができますか?
私はまだ 2dim 配列についてかなり曖昧だと思います。私が所有する本では、この種のケースは実際にはカバーされていません。