#include #include #include using namespace std; string padding(string str) { string str2 = str; int length = str.length(); int i = length - 1; char c = '0'; if (str2[i] == '0') { switch (length) { case 0: str2 = str2 + "ZYXWVUTSRQPO"; break; case 1: str2 = str2 + "YXWVUTSRQPO"; break; case 2: str2 = str2 + "XWVUTSRQPO"; break; case 3: str2 = str2 + "WVUTSRQPO"; break; case 4: str2 = str2 + "VUTSRQPO"; break; case 5: str2 = str2 + "UTSRQPO"; break; case 6: str2 = str2 + "TSRQPO"; break; case 7: str2 = str2 + "SRQPO"; break; case 8: str2 = str2 + "RQPO"; break; case 9: str2 = str2 + "QPO"; break; case 10: str2 = str2 + "PO"; break; case 11: str2 = str2 + "O"; break; case 12: str2 = str2 + ""; break; default: return ""; } } if (str2[i] == '1') { switch (length) { case 0: str2 = str2 + "YXWVUTSRQPOZ"; break; case 1: str2 = str2 + "XWVUTSRQPOZ"; break; case 2: str2 = str2 + "WVUTSRQPOZ"; break; case 3: str2 = str2 + "VUTSRQPOZ"; break; case 4: str2 = str2 + "UTSRQPOZ"; break; case 5: str2 = str2 + "TSRQPOZ"; break; case 6: str2 = str2 + "SRQPOZ"; break; case 7: str2 = str2 + "RQPOZ"; break; case 8: str2 = str2 + "QPOZ"; break; case 9: str2 = str2 + "POZ"; break; case 10: str2 = str2 + "OZ"; break; case 11: str2 = str2 + "Z"; break; case 12: str2 = str2 + ""; break; default: return ""; } } if (str2[i] == '2') { switch (length) { case 0: str2 = str2 + "XWVUTSRQPOZY"; break; case 1: str2 = str2 + "WVUTSRQPOZY"; break; case 2: str2 = str2 + "VUTSRQPOZY"; break; case 3: str2 = str2 + "UTSRQPOZY"; break; case 4: str2 = str2 + "TSRQPOZY"; break; case 5: str2 = str2 + "SRQPOZY"; break; case 6: str2 = str2 + "RQPOZY"; break; case 7: str2 = str2 + "QPOZY"; break; case 8: str2 = str2 + "POZY"; break; case 9: str2 = str2 + "OZY"; break; case 10: str2 = str2 + "ZY"; break; case 11: str2 = str2 + "Y"; break; case 12: str2 = str2 + ""; break; default: return ""; } } if (str2[i] == '3') { switch (length) { case 0: str2 = str2 + "WVUTSRQPOZYX"; break; case 1: str2 = str2 + "VUTSRQPOZYX"; break; case 2: str2 = str2 + "UTSRQPOZYX"; break; case 3: str2 = str2 + "TSRQPOZYX"; break; case 4: str2 = str2 + "SRQPOZYX"; break; case 5: str2 = str2 + "RQPOZYX"; break; case 6: str2 = str2 + "QPOZYX"; break; case 7: str2 = str2 + "POZYX"; break; case 8: str2 = str2 + "OZYX"; break; case 9: str2 = str2 + "ZYX"; break; case 10: str2 = str2 + "YX"; break; case 11: str2 = str2 + "X"; break; case 12: str2 = str2 + ""; break; default: return ""; } } if (str2[i] == '4') { switch (length) { case 0: str2 = str2 + "VUTSRQPOZYXW"; break; case 1: str2 = str2 + "UTSRQPOZYXW"; break; case 2: str2 = str2 + "TSRQPOZYXW"; break; case 3: str2 = str2 + "SRQPOZYXW"; break; case 4: str2 = str2 + "RQPOZYXW"; break; case 5: str2 = str2 + "QPOZYXW"; break; case 6: str2 = str2 + "POZYXW"; break; case 7: str2 = str2 + "OZYXW"; break; case 8: str2 = str2 + "ZYXW"; break; case 9: str2 = str2 + "YXW"; break; case 10: str2 = str2 + "XW"; break; case 11: str2 = str2 + "W"; break; case 12: str2 = str2 + ""; break; default: return ""; } } if (str2[i] == '5') { switch (length) { case 0: str2 = str2 + "UTSRQPOZYXWV"; break; case 1: str2 = str2 + "TSRQPOZYXWV"; break; case 2: str2 = str2 + "SRQPOZYXWV"; break; case 3: str2 = str2 + "RQPOZYXWV"; break; case 4: str2 = str2 + "QPOZYXWV"; break; case 5: str2 = str2 + "POZYXWV"; break; case 6: str2 = str2 + "OZYXWV"; break; case 7: str2 = str2 + "ZYXWV"; break; case 8: str2 = str2 + "YXWV"; break; case 9: str2 = str2 + "XWV"; break; case 10: str2 = str2 + "WV"; break; case 11: str2 = str2 + "V"; break; case 12: str2 = str2 + ""; break; default: return ""; } } if (str2[i] == '6') { switch (length) { case 0: str2 = str2 + "TSRQPOZYXWVU"; break; case 1: str2 = str2 + "SRQPOZYXWVU"; break; case 2: str2 = str2 + "RQPOZYXWVU"; break; case 3: str2 = str2 + "QPOZYXWVU"; break; case 4: str2 = str2 + "POZYXWVU"; break; case 5: str2 = str2 + "OZYXWVU"; break; case 6: str2 = str2 + "ZYXWVU"; break; case 7: str2 = str2 + "YXWVU"; break; case 8: str2 = str2 + "XWVU"; break; case 9: str2 = str2 + "WVU"; break; case 10: str2 = str2 + "VU"; break; case 11: str2 = str2 + "U"; break; case 12: str2 = str2 + ""; break; default: return ""; } } if (str2[i] == '7') { switch (length) { case 0: str2 = str2 + "SRQPOZYXWVUT"; break; case 1: str2 = str2 + "RQPOZYXWVUT"; break; case 2: str2 = str2 + "QPOZYXWVUT"; break; case 3: str2 = str2 + "POZYXWVUT"; break; case 4: str2 = str2 + "OZYXWVUT"; break; case 5: str2 = str2 + "ZYXWVUT"; break; case 6: str2 = str2 + "YXWVUT"; break; case 7: str2 = str2 + "XWVUT"; break; case 8: str2 = str2 + "WVUT"; break; case 9: str2 = str2 + "VUT"; break; case 10: str2 = str2 + "UT"; break; case 11: str2 = str2 + "T"; break; case 12: str2 = str2 + ""; break; default: return ""; } } if (str2[i] == '8') { switch (length) { case 0: str2 = str2 + "RQPOZYXWVUTS"; break; case 1: str2 = str2 + "QPOZYXWVUTS"; break; case 2: str2 = str2 + "POZYXWVUTS"; break; case 3: str2 = str2 + "OZYXWVUTS"; break; case 4: str2 = str2 + "ZYXWVUTS"; break; case 5: str2 = str2 + "YXWVUTS"; break; case 6: str2 = str2 + "XWVUTS"; break; case 7: str2 = str2 + "WVUTS"; break; case 8: str2 = str2 + "VUTS"; break; case 9: str2 = str2 + "UTS"; break; case 10: str2 = str2 + "TS"; break; case 11: str2 = str2 + "S"; break; case 12: str2 = str2 + ""; break; default: return ""; } } if (str2[i] == '9') { switch (length) { case 0: str2 = str2 + "POZYXWVUTSRQ"; break; case 1: str2 = str2 + "OZYXWVUTSRQ"; break; case 2: str2 = str2 + "ZYXWVUTSRQ"; break; case 3: str2 = str2 + "YXWVUTSRQ"; break; case 4: str2 = str2 + "XWVUTSRQ"; break; case 5: str2 = str2 + "WVUTSRQ"; break; case 6: str2 = str2 + "VUTSRQ"; break; case 7: str2 = str2 + "UTSRQ"; break; case 8: str2 = str2 + "TSRQ"; break; case 9: str2 = str2 + "SRQ"; break; case 10: str2 = str2 + "RQ"; break; case 11: str2 = str2 + "Q"; break; case 12: str2 = str2 + ""; break; default: return ""; } } if (str2[i] == '}' || str2[i] == '!' || str2[i] == '%' || str2[i] == '(' || str2[i] == '_' || str2[i] == ')') { switch (length) { case 0: str2 = str2 + "QPOZYXWVUTSR"; break; case 1: str2 = str2 + "POZYXWVUTSR"; break; case 2: str2 = str2 + "OZYXWVUTSR"; break; case 3: str2 = str2 + "ZYXWVUTSR"; break; case 4: str2 = str2 + "YXWVUTSR"; break; case 5: str2 = str2 + "XWVUTSR"; break; case 6: str2 = str2 + "WVUTSR"; break; case 7: str2 = str2 + "VUTSR"; break; case 8: str2 = str2 + "UTSR"; break; case 9: str2 = str2 + "TSR"; break; case 10: str2 = str2 + "SR"; break; case 11: str2 = str2 + "R"; break; case 12: str2 = str2 + ""; break; default: return ""; } } return str2; } string gen_code(string str2) { string cArr = ""; if (str2.length() == 12) { cArr += str2[6]; cArr += str2[0]; cArr += str2[3]; cArr += str2[8]; cArr += '-'; cArr += str2[2]; cArr += str2[4]; cArr += str2[11]; cArr += str2[4]; cArr += '-'; cArr += str2[7]; cArr += str2[10]; cArr += str2[6]; cArr += str2[2]; cArr += '-'; cArr += str2[0]; cArr += str2[8]; cArr += str2[9]; cArr += str2[6]; cArr += '-'; cArr += str2[10]; cArr += str2[5]; cArr += str2[1]; cArr += str2[11]; return cArr; } return ""; } string replacecode(string str) { string str2 = str; char c2 = ' '; int i2 = 0; char c = '0'; bool z = false; while (i2 < 24) { if (str2[i2] == '}') { c2 = 'T'; z = true; } if (str2[i2] == '!') { c2 = 'I'; z = true; } if (str2[i2] == '%') { c2 = 'M'; z = true; } if (str2[i2] == '(') { c2 = 'O'; z = true; } if (str2[i2] == '_') { c2 = 'A'; z = true; } if (str2[i2] == ')') { c2 = 'Y'; z = true; } if (str2[i2] == c) { c2 = 'Q'; z = true; } if (str2[i2] == '1') { c2 = 'S'; z = true; } if (str2[i2] == '2') { c2 = 'U'; z = true; } if (str2[i2] == '3') { c2 = 'W'; z = true; } if (str2[i2] == '4') { c2 = 'Y'; z = true; } if (str2[i2] == '5') { c2 = 'Z'; z = true; } if (str2[i2] == '6') { c2 = 'X'; z = true; } if (str2[i2] == '7') { c2 = 'V'; z = true; } if (str2[i2] == '8') { c2 = 'T'; z = true; } if (str2[i2] == '9') { c2 = 'R'; z = true; } if (str2[i2] == 'A' || str2[i2] == 'a') { c2 = '0'; z = true; } if (str2[i2] == 'B' || str2[i2] == 'b') { c2 = '2'; z = true; } if (str2[i2] == 'C' || str2[i2] == 'c') { c2 = '4'; z = true; } if (str2[i2] == 'D' || str2[i2] == 'd') { c2 = '6'; z = true; } if (str2[i2] == 'E' || str2[i2] == 'e') { c2 = '8'; z = true; } if (str2[i2] == 'F' || str2[i2] == 'f') { c2 = 'A'; z = true; } if (str2[i2] == 'G' || str2[i2] == 'g') { c2 = 'C'; z = true; } if (str2[i2] == 'H' || str2[i2] == 'h') { c2 = 'E'; z = true; } if (str2[i2] == 'I' || str2[i2] == 'i') { c2 = 'G'; z = true; } if (str2[i2] == 'J' || str2[i2] == 'j') { c2 = 'I'; z = true; } if (str2[i2] == 'K' || str2[i2] == 'k') { c2 = 'K'; z = true; } if (str2[i2] == 'L' || str2[i2] == 'l') { c2 = 'M'; z = true; } if (str2[i2] == 'M' || str2[i2] == 'm') { c2 = 'O'; z = true; } if (str2[i2] == 'N' || str2[i2] == 'n') { c2 = 'P'; z = true; } if (str2[i2] == 'O' || str2[i2] == 'o') { c2 = 'N'; z = true; } if (str2[i2] == 'P' || str2[i2] == 'p') { c2 = 'L'; z = true; } if (str2[i2] == 'Q' || str2[i2] == 'q') { c2 = 'J'; z = true; } if (str2[i2] == 'R' || str2[i2] == 'r') { c2 = 'H'; z = true; } if (str2[i2] == 'S' || str2[i2] == 's') { c2 = 'F'; z = true; } if (str2[i2] == 'T' || str2[i2] == 't') { c2 = 'B'; z = true; } if (str2[i2] == 'U' || str2[i2] == 'u') { c2 = 'B'; z = true; } if (str2[i2] == 'V' || str2[i2] == 'v') { c2 = '9'; z = true; } if (str2[i2] == 'W' || str2[i2] == 'w') { c2 = '7'; z = true; } if (str2[i2] == 'X' || str2[i2] == 'x') { c2 = '5'; z = true; } if (str2[i2] == 'Y' || str2[i2] == 'y') { c2 = '3'; z = true; } if (str2[i2] == 'Z' || str2[i2] == 'z') { c2 = '1'; z = true; } if (z) { str2[i2] = c2; z = false; } i2++; c = '0'; } return str2; } string generate_password(string str) { string str2 = ""; for (int i = 0; i < str.length(); i++) { if (str[i] == 'z') { continue; } else { str2 += str[i]; } } string str3 = padding(str2); string str4 = gen_code(str3); string str5 = replacecode(str4); return str5; } int main(int argc, char* argv[]) { string str; if (argc == 1) { cout << "Enter the product_id: "; cin >> str; cout << generate_password(str)<<"\n"; cin.get(); cout<<"press any key to exit"; cin.get(); } else { str = argv[1]; cout << generate_password(str)<<"\n"; } return 0; }