У меня возникли проблемы с выяснением того, как добавить строку char, char в двумерный массив.Добавление строки, char char, в массив 2dim
В рамках создания подстановки шифра для кодирования «секретных сообщений,» Я пытаюсь,
- принять ключевое слово,
- удалить все лишние буквы из указанных ключевого слова
- добавить новое ключевое слово в массив 5x5, char by 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];
}
Что это до сих пор ставится в new_keyword, символ на гольца, в 2 dim массива. Очевидно, что «PREATION» представляет собой строку длиной более 5 символов, но программа «знает» это кажущееся перекрытие и продолжает добавлять оставшиеся символы «ION» во вторую строку.
arr[1][0] == 'I';
arr[1][1] == 'O';
arr[1][2] == 'N';
Зачем ему это известно?
Кроме того, мне все еще нужно добавить new_alphabet, начиная с arr [1] [3], и хотя я мог бы явно кодировать что-то вроде «начинаю добавлять в new_alphabet @ arr [1] [3]», это, очевидно, должно быть «dynamic» и начать добавлять в элемент сразу же после любого нового слова. Как мне это сделать?
Я предполагаю, что я все еще довольно нечеткий на массивах 2dim, а книга, которой я владею, на самом деле не охватывает такой случай, поэтому всякая помощь очень ценится.
Спасибо, эти работы просто великолепны! У меня есть пара (возможно, noobish) вопросов, хотя-1. (& arr [0] [0]) [i] и (& arr [0] [0]) [new_keyword.length() + i] относятся к стартовым местоположениям для где эти две строки добавлены, правильно? Не могли бы вы объяснить мне цель «&»? Я думал, что массивы всегда передавались по умолчанию. 2. Какова цель i
HelloMyNameIsRay
@HelloMyNameIsRay Чтобы ответить на ваш второй вопрос ('new_alphabet + new_keyword == 25'), я был немым и не понимал этого. Я исправлю это в ответе. – Jashaszun
@HelloMyNameIsRay Оператор '&' является адресом оператора. Поэтому я беру адрес первого элемента массива 2d с помощью '@arr [0] [0]', а затем, поскольку это указатель, я тогда действую так, как будто это 1d-массив, и я пишу последовательно слоты памяти. – Jashaszun