Advertisement
niks32

Untitled

Nov 9th, 2022
703
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.36 KB | None | 0 0
  1. #include <iostream>
  2. #include<vector>
  3.  
  4. using namespace std;
  5.  
  6. bool isRightPass(const char *pass, const char* pass2)
  7. {
  8.     return !strcmp(pass, pass2);
  9. }
  10.  
  11. void generator(const char* pass, const char* mapChar, vector<int> &curretPass, int scale = 0, int maxSizePass = 3)
  12. {
  13.     char tmpPass[10] = "";
  14.     bool isFind = 0;
  15.  
  16.  
  17.     while (!isFind)
  18.     {
  19.         if (curretPass[scale] == strlen(mapChar)) //если текущий элемент, последйний в карте подбора
  20.         {
  21.             if (scale < maxSizePass && curretPass[0] == strlen(mapChar)) //если текущий шаг(колличество знаков) меньше МАКСИМАЛЬНОГО
  22.             {
  23.                 curretPass.push_back(0);
  24.                 scale++;
  25.                
  26.                 for (int i = 0; i < curretPass.size(); i++) //Обнуляем все значение после добавления нового элемента
  27.                 {
  28.                     curretPass[i] = 0;
  29.                 }
  30.             }
  31.             else
  32.             {
  33.                 for (int i = curretPass.size() - 1; i > 0; i--)
  34.                 {
  35.                     if (curretPass[i] == strlen(mapChar))
  36.                     {
  37.                         curretPass[i] = 0; //повторное обнуление
  38.                         if (curretPass[i - 1] == strlen(mapChar))
  39.                         {
  40.                             curretPass[i - 1] = 0; //вроде как уже учтено
  41.                         }
  42.                         else
  43.                         {
  44.                             curretPass[i - 1]++;
  45.                         }
  46.                     }
  47.                 }
  48.                 if (curretPass[0] == strlen(mapChar))
  49.                 {
  50.                     generator(pass, mapChar, curretPass, scale, maxSizePass);
  51.                 }
  52.             }                      
  53.         }
  54.        
  55.         for (int i = 0; i < curretPass.size(); i++)
  56.         {
  57.             tmpPass[i] = mapChar[curretPass[i]];
  58.         }
  59.         tmpPass[curretPass.size()+1] = '/0';
  60.  
  61.         isFind = isRightPass(pass, tmpPass);
  62.         cout << "pass -> [" << tmpPass << "] Результат - " << isFind << endl;
  63.  
  64.         curretPass[scale]++;
  65.  
  66.         generator(pass, mapChar, curretPass, scale, maxSizePass);
  67.  
  68.                        
  69.     }
  70. }
  71.  
  72.  
  73. int main()
  74. {
  75.     setlocale(LC_ALL, "Russian");
  76.  
  77.     char pass[100] = "12";
  78.     char mapChar[] = "0123456789";
  79.  
  80.     vector<int> tmpIntMass = { 0 };
  81.  
  82.    
  83.     generator(pass, mapChar, tmpIntMass);
  84.  
  85.     std::cout << "Hello World!\n";
  86. }
  87.  
  88. // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
  89. // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
  90.  
  91. // Советы по началу работы
  92. //   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
  93. //   2. В окне Team Explorer можно подключиться к системе управления версиями.
  94. //   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
  95. //   4. В окне "Список ошибок" можно просматривать ошибки.
  96. //   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
  97. //   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement