Раскодировщик
Здесь приведен пример программы, в которой определяется функция для раскодирования текстового сообщения, представленного в виде целочисленного массива. Аргументом функции является текстовая строка (реализованная в виде символьного массива), на основе которой выполняется раскодировка, а так же числовой массив, представляющий закодированный текст. Программный код представлен ниже.
Использованный здесь способ кодирования сообщений позволяет задавать одни и те же символы (буквы) различными цифрами - если соответствующая буква входит в базовую строку несколько раз. Кроме того, базовая строка должна быть достаточно длинной, чтобы
она содержала все буквы алфавита - иначе возникнут проблемы с кодировкой. Ситуацию можно разрешать, заменяя при кодировке те символы, которых нет в базовой строке, предопределенным набором цифр - например, элементов числового массива. В этом случае необходимо удостовериться в корректности кодирования, чтобы потом можно было выполнить обратную операцию по раскодированию. Рассмотренный пример иллюстративный, поэтому базовая строка выбрана относительно небольшой.
#include#include using namespace std; void decoder(char *s,int *cstr,int n){ char str[100]; int i; for(i=0; i < n; i++){ str[i]=s[cstr[i]]; } str[n]='\0'; cout << str << endl; } int main(){ char s[]="He would remember that honesty is the best policy!"; int cstr[]={0,10,6,45,4,49,2,0,4,3,17,20,9,1,8,29,24,5}; decoder(s,cstr,18); return 0; }