Шифрование вертикальной перестановкой, помогите откомпилировать и запустить данный код. Код | //Функция шифрования перестановочным шифром AnsiString MOVETXT(AnsiString Text,int MOVETXTdx,bool ynConstCount) { if(Text.Length()==0) //Проверка на существование текста подлежащего шифрованию { return ""; //Отсутствие шифрованного текста } AnsiString text_w=""; //временная переменная для избавления пробелов в шифруемом тексте for(int i = 0;i<Text.Length();i++) //Цикл избавления от пробелов { if(Text.c_str()[i]!=' ') //проверка на пробел { text_w=text_w+Text.c_str()[i]; //Добавление символа } } Text=text_w; //Получаем текст без пробелов AnsiString SHIFR=""; //Будущий шифр vector<SMatrixNoParallelogram> MatrixNoParallelogram; //Неправильная матрица символов for(int i=0;i<MOVETXTdx;i++) //Цикл создания столбцов неправильной матрицы { MatrixNoParallelogram.push_back(OMatrixNoParallelogram); //Добавить столбец в неправильную матрицу } int number_column=0; //Номер текущего столбца матрицы for(int i=0;i<Text.Length();i++) //Цикл заполнения матрицы символами { if(number_column>=MOVETXTdx) //Проверка правильности номера столбца матрицы { number_column=0; //Возвращение на первый столбец матрицы } MatrixNoParallelogram[number_column].Symvol.push_back(Text.c_str()[i]); //Добавление символа в матрицу number_column++; //Переход на следующий столбец матрицы } if(ynConstCount) //На какие блоки разбивать шифр { int CountMaxLines=(MatrixNoParallelogram[0].Symvol.size()); //Максимальное количество строчек в матрице int NumberSymvolToBlock=0; //Номер символа записываемого в зашифрованный блок for(int s_MOVETXT=0; s_MOVETXT<MatrixNoParallelogram.size(); s_MOVETXT++) //Цикл шифрования текста { for(int i_MOVETXT=0; (i_MOVETXT<(MatrixNoParallelogram[s_MOVETXT].Symvol.size())); i_MOVETXT++) //Цикл прохождения по столбцу матрицы { SHIFR=SHIFR+(MatrixNoParallelogram[s_MOVETXT].Symvol[i_MOVETXT]); //Добавление нового зашифрованного символа NumberSymvolToBlock++; //Переход на следующий символ зашифрованного блока if(CountMaxLines<=NumberSymvolToBlock) //проверка правильности номера символ зашифрованного блока { NumberSymvolToBlock=0; //Переход на первый символ зашифрованного блока SHIFR=SHIFR+" "; //Разбиение на зашифрованные блоки } } } if(NumberSymvolToBlock>0) //Хватило ли символов на последний блок { for(int s_MOVETXT=0;s_MOVETXT<(CountMaxLines-NumberSymvolToBlock);s_MOVETXT++) //Добавление символов в последний блок { SHIFR=SHIFR+"x"; //Добавление специального символа X } } } else { for(int s_MOVETXT=0; s_MOVETXT<MatrixNoParallelogram.size(); s_MOVETXT++) //Цикл шифрования текста { for(int i_MOVETXT=0; (i_MOVETXT<(MatrixNoParallelogram[s_MOVETXT].Symvol.size())); i_MOVETXT++) //Цикл прохождения по столбцу матрицы { SHIFR=SHIFR+(MatrixNoParallelogram[s_MOVETXT].Symvol[i_MOVETXT]); //Добавление нового зашифрованного символа } SHIFR=SHIFR+" "; //Разбиение на зашифрованные блоки } } return SHIFR; //Возвращение шифра }
|
|