Advertisement
HEX0x29A

Зашифровать текст по спирали

Sep 11th, 2019
449
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. #include <windows.h>
  2. #include <cmath>
  3. #include <iostream>
  4. using namespace std;
  5. int main(){
  6.     //setlocale(LC_ALL, "Russian");
  7.     SetConsoleCP(1251);
  8.     SetConsoleOutputCP(1251);
  9.     string s;
  10.     cout << "Текст: ";
  11.     getline(cin, s);
  12.     while (sqrt(s.length()) != (int)sqrt(s.length()) || (int)sqrt(s.length()) % 2 == 0)
  13.         s += ' ';
  14.     int n = (int)sqrt(s.length());
  15.     char a[n][n];
  16.     for (int i = 0; i < s.length(); ++i){
  17.         if (i && i % n == 0)
  18.             cout << endl;  
  19.         a[i/n][i%n] = s[i];
  20.         cout << a[i/n][i%n] << ' ';
  21.     }
  22.     cout << endl << "Зашифровано: '";
  23.     int i = n / 2, j = i, imax = i + 1, imin = i - 1, jmax = j + 1, jmin = j - 1;
  24.     do{
  25.         while (j != jmin)
  26.             cout << a[i][j--];
  27.         jmin--;
  28.         while (i != imax)
  29.             cout << a[i++][j];
  30.         imax++;
  31.         while (j != jmax)  
  32.             cout << a[i][j++];
  33.         jmax++;
  34.         while (i != imin)  
  35.             cout << a[i--][j];
  36.         imin--;
  37.         while (j != jmin)  
  38.             cout << a[i][j--];
  39.     }while (i > 0 || j > 0);
  40.     cout << "'\n";
  41.     cin.get(); return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement