C++. Шифр Виженера. Шифратор написала, а дешифратор не могу собразить.

#include «stdafx.h»

#include «pch.h»

#include

#include

#include

#include

using namespace std;


int _tmain(int argc,_TCHAR* argv[])

{

string B, C, D = "";

string A = «abcdefghijklmnopqrstuvwxyz»;

setlocale(LC_ALL, «Rus»);

cout << «Введите слово: »;

cin >>B;

cout << «Введите ключ: »;

cin >>C;

int *F = new int[B.size()];

int *G = new int[B.size()];

int c = C.size();

int b = B.size();

if (b >= c)

{

for (int i = 0; i < (b / c); i++)

{
D = D + C;
}

for (int j = 0; j < (b%c); j++)
{

D = D + C[j];

}

}

else

{

for (int s = 0; s < b; s++)

{

D = D + B[s];
}

}
cout << D << endl;

for (int k = 0; k < b; k++)

{

for (int n = 0; n < 26; n++)

{

if (B[k] == A[n])

{

F[k] = n;

}

if (D[k] == A[n])

{

G[k] = n;

}

}

}

int e = 0;

for (int u = 0; u < b; u++)

{

e = ((F[u] + G[u]) % 26);

B[u] = A[e];

}

cout << «Ваше зашифрованное слово: » << B << endl;

return 0;

}

Ответы

Ответ дал: CAYFER
1

#include <iostream>

#include <string>

using namespace std;

int main()

{

   string B, C, D = "";

   string A = "abcdefghijklmnopqrstuvwxyz";

   setlocale(LC_ALL, "rus");

   cout << "Введите слово: ";

   cin >>B;

   cout << "Введите ключ: ";

   cin >>C;

   int *F = new int[B.size()];

   int *G = new int[B.size()];

   int c = C.size();

   int b = B.size();

   if (b >= c)

   {

   for (int i = 0; i < (b / c); i++)

   {

       D = D + C;

   }

   for (int j = 0; j < (b%c); j++)

   {

       D = D + C[j];

   }

   }

   else

   {

   for (int s = 0; s < b; s++)

   {

       D = D + B[s];

   }

   }

   cout << D << endl;

   for (int k = 0; k < b; k++)

   {

       for (int n = 0; n < 26; n++)

       {

           if (B[k] == A[n])

           {

               F[k] = n;

           }

           if (D[k] == A[n])

           {

               G[k] = n;

           }

       }

   }

   int e = 0;

//    for (int u = 0; u < b; u++)

//    {

//        e = ((F[u] + G[u]) % 26);

//        B[u] = A[e];

//    }

   for (int u = 0; u < b; u++)

   {

       e = ((F[u] - G[u]));

       if (e<0)

           e+=26;

       B[u] = A[e];

   }

   //cout << "Ваше зашифрованное слово: " << B << endl;

   cout << "Ваше расшифрованное слово: " << B << endl;

   return 0;

}


CAYFER: https://pastebin.com/D6ePDS0w
Вас заинтересует