Advertisement
Guest User

Scramble fixed

a guest
Dec 12th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.40 KB | None | 0 0
  1.     #include <iostream>
  2.     #include <string>
  3.     #include <windows.h>
  4.  
  5.     using namespace std;
  6.  
  7.     void line_out(bool * line, int len){
  8.         for (int i =0; i < len; i++){
  9.             cout << line[i] << (((i+1) % 8 == 0) ? " " : "");
  10.         }
  11.     }
  12.  
  13.     bool * scramble(bool * a_line, int len, bool descr){
  14.         bool *line = new bool[len];
  15.  
  16.         bool *c_line = new bool[len];
  17.         if (descr == 1)
  18.             line = a_line;
  19.         for (int i = 0; i < len; i++){
  20.             if( i < 5 )
  21.                 (descr == 1 ? c_line[i] : line[i] ) = a_line[i];
  22.             else if ( i < 9 )
  23.                 (descr == 1 ? c_line[i] : line[i] ) = a_line[i] ^ line[i - 5];
  24.             else if ( i < 11 )
  25.                 (descr == 1 ? c_line[i] : line[i] ) = a_line[i] ^ line[i - 5] ^ line[i - 9];
  26.             else
  27.                 (descr == 1 ? c_line[i] : line[i] ) = a_line[i] ^ line[i - 5] ^ line[i - 9] ^ line[i - 11];
  28.         }
  29.         return ((descr == 1 ? c_line : line ));
  30.     }
  31.     void compare (bool * a_line, bool * b_line, int len){
  32.         int ne = 0;
  33.         for (int i =0; i < len; i++){
  34.             ne += (a_line[i] != b_line[i])? 1 : 0;
  35.         }
  36.         cout << ((ne == 0)? "equal sequences" : "differ. sequences");
  37.     }
  38.     int main()
  39.     {
  40.         string line;
  41.         cout << "Enter your sequence!" << endl;
  42.         getline(cin, line);
  43.  
  44.         bool *a_line = new bool[line.length()];
  45.         bool *b_line = new bool[line.length()];
  46.         bool *c_line = new bool[line.length()];
  47.         for (int i = 0; i < line.length(); i++) {
  48.             if (line[i] == ' ')
  49.                 line.erase(i, 1);
  50.         }
  51.         for (int i = 0; i < line.length(); i++) {
  52.                 a_line[i] = (int(line[i]) == 48) ? 0 : 1;
  53.         }
  54.         system("cls");
  55.         cout << "Original sequence: ";
  56.         line_out(a_line, line.length());
  57.         cout << endl;
  58.         b_line = scramble(a_line, line.length(),0);
  59.         cout << "Scrambled sequence: ";
  60.         line_out(b_line, line.length());
  61.         cout << endl;
  62.         c_line = scramble(b_line, line.length(),1);
  63.         cout << "Descrambled sequence: ";
  64.         line_out(c_line, line.length());
  65.         cout << endl;
  66.         cout << "After scrambling and descrambling we got - ";
  67.         compare(a_line, c_line, line.length());
  68.         delete a_line;
  69.         delete b_line;
  70.         delete c_line;
  71.         return 0;
  72.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement