Как исправить проблему в программе на расшифровку шифра цезаря?

 #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++;
  }
 }

Написал код который занимается расшифровкой шифра цезаря и программа работает (есть несколько текстов на шифре написанные).Вопрос почему буква А расшифрованая вечно превращается в букву "м" и каr исправить проблему. То есть если зашифровано слово "ВАКАНДА" то прога напишет "ВМКМНДМ" .(язык украинский )


Ответы (0 шт):