Нужна помощь в написании метода дескремблирования для шифра замены

Мне нужна помощь с заданием по Java. Нам дан зашифрованный текстовый файл, который был зашифрован с использованием шифра подстановки, где каждая буква в тексте просто заменяется другой буквой. Моя программа почти закончена, но я никак не могу понять, как написать окончательный метод "дескремблирования", который берет зашифрованный текст и заменяет каждую букву ее правильной заменой, чтобы выявить правильный текст.

Вот инструкции, указанные в задании:

Дескремблирование выполняется с использованием буквы в зашифрованном тексте в качестве индекса в массиве символов. Например, если в зашифрованном тексте есть буква B, вы замените ее символом, который имеет индекс 2 в массиве. Все пробелы и знаки препинания из исходного файла также должны быть в дескремблированном файле, только буквы должны быть изменены. Кроме того, если в исходном файле буква была заглавной, она должна быть заглавной и в дескремблированном файле (аналогично строчные буквы должны оставаться строчными).

Я не прошу, чтобы мне дали ответ, так как это для школы. Я просто не могу правильно понять эти инструкции, что именно мне нужно сделать, чтобы успешно расшифровать текст? В основном я не понимаю, как я могу использовать букву в качестве индекса для массива символов, разве индексы не всегда целые числа?


person eljstonge    schedule 13.06.2012    source источник


Ответы (1)


Вы не сказали, на каком языке работаете, поэтому я буду использовать C/Java. Вы захотите вычислить целочисленный индекс. Предположим на данный момент, что scrambled_char — это заглавная буква, тогда это:

// index into descrambling array:
int index = scrambled_char - 'A' + 1;

Это имеет значение 1 для символа A, 2 для B и т. д., как говорит проблема. Похоже, вам дали массив дескремблирования. Например:

char descramble[] = "_ZYX ... ";

Это приведет к переводу A в Z, B в Y, C в X, ...

Дескремблированный символ будет

char descrambled_char = descramble[index];

Теперь вам просто нужно понять, как обрабатывать строчные буквы, пробелы и знаки препинания.

person Gene    schedule 13.06.2012
comment
Извините, я работаю с Java. Я отредактировал первый пост, чтобы включить это. Я совсем не знаком с C, он работает так же, как Java? - person eljstonge; 13.06.2012
comment
Код будет таким же для Java. Если у вас есть строки, преобразуйте их в массивы символов с помощью char [] scrambled = scrambled_string.toCharArray();. - person Gene; 13.06.2012