首页 > 解决方案 > 如何解决解密凯撒密码的程序中的问题?

问题描述

     #include <iostream>

 using namespace std;
 int main()
{
setlocale(LC_ALL, "Ukrainian");
string text = "ІЇЬЩЙКХЧКЬСИЛЧХЙЮІЙБНИКЇИЗБДШЬЗЬЇХКИЇАХЩИІИЖИШИУФЕИШИЄУЩФЖЖИЯЗХЧ";
char arr[32] = { 'А','Б','В', 'Г', 'Д', 'Е', 'Є', 'Ж', 'З', 'И', 'І', 'Ї', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ь', 'Ю', 'Я', };
int plus = 1;
for (int b = 1;b < 32;b++) {
    string var =  text;
    for (int i = 0;i < text.length();i++) {
        for (int a = 0;a < 32;a++) {
          if (var[i] == arr[a]) {                 
                if ((a - plus )> 0) {
                    var[i] = arr[a - plus];
                    break;
                }
                else {
                    var[i] = arr[32 +(a - plus)];
                    break;
                }
            }
            ;
        }

    }
    cout << "Ключ =" << plus-1 << "\n \n ";
    for (int c = 0;c < size(var);c++) {
        cout << var[c];
    }
    cout << "\n";
    plus++;
  }
 }

已经编写了一个代码来处理扩展的加密对冲并且程序正在运行(є 代码中写入的文本数量)但是当我得到解密的文本而不是字母“A”时,出现了一个难以理解的字符。如何解决这个问题?(乌克兰字母)

标签: c++

解决方案


什么时候a == plus,你访问arr [32]


推荐阅读