#include //ввод/вывод #include //хранение символов #include //работа со строками #include //работа с rand() #include //работа со временем int main() { std::vector allowedChars; char useLetters, useDigits, useSpecials;//переменные символьного типа int caseChoice = 0;//переменные целочисленного типа int passwdLength = 0;//переменная для длинны пароля std::cout << "=== Генератор паролей ===" << std::endl;//Типо заголовок std::cout << "Использовать буквы? (y/n): ";//Запрашиваем использование букв std::cin >> useLetters;//Ввод с клавиатуры if (useLetters == 'y' || useLetters == 'Y') { std::cout << "Выбери регистр:" << std::endl; std::cout << "1 - Заглавные" << std::endl; std::cout << "2 - Строчные" << std::endl; std::cout << "3 - Оба" << std::endl; std::cout << "Твой выбор: "; std::cin >> caseChoice;//Выбор регистра if (caseChoice == 1 || caseChoice == 3) {//если выбор заглавный регистр то (1) если оба то (3) std::vector engUpper = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; allowedChars.insert(allowedChars.end(), engUpper.begin(), engUpper.end());//копируем буквы из engUpper } if (caseChoice == 2 || caseChoice == 3) {//Если выбрал строчный реггистр то (2) std::vector engLower = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}; allowedChars.insert(allowedChars.end(), engLower.begin(), engLower.end());//снова копируем } } std::cout << "Использовать спецсимволы? (y/n): ";//Запрашшиваем использование символов std::cin >> useSpecials;//Ввод с клавиатуры if (useSpecials == 'y' || useSpecials == 'Y') {//Если используем вводим 'y' std::vector specials = {"!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "_", "=", "+", "[", "]", "{", "}", ";", ":", ",", ".", "<", ">", "/", "?"}; allowedChars.insert(allowedChars.end(), specials.begin(), specials.end());//копируем и добавляем символы из specials в allowedChars } std::cout << "Использовать цифры? (y/n): ";//Запрашиваем использование цифр? std::cin >> useDigits;//Ввод с клавиатуры if (useDigits == 'y' || useDigits == 'Y') { //{Если используем вводим 'y' std::vector digits = {"0","1","2","3","4","5","6","7","8","9"}; allowedChars.insert(allowedChars.end(), digits.begin(), digits.end());//копируем и добавляем цифры из digits.begin в allowedChars } std::cout << "Введи желаемую длину пароля: ";//Запрашиваем длинну пароля std::cin >> passwdLength;//Вводим if (allowedChars.empty()) {//Если выбранных символов нет то: std::cout << "Ошибка: не выбран ни один тип символов. Генерация невозможна." << std::endl;//ошибка return 1; } if (passwdLength <= 0 || passwdLength>15) {//если длинна пароля меньше ноля и больше 10 то: std::cout << "Ошибка: длина пароля должна быть положительным числом но не больше 15 символов." << std::endl;//ошибка return 1; } std::srand(static_cast(std::time(nullptr)));//Задаем генератору стартовое значение std::cout << "\nСгенерированные пароли:" << std::endl;//Надпись "Сгенерированные пароли: " for (int p = 0; p < 3; ++p) {//Генерация продолжается пока паролей не будет 3 std::string password = "";//Пустая строка для паролей for (int i = 0; i < passwdLength; ++i) {//создается длинна пароля int index = std::rand() % allowedChars.size();//генерируем целое число неограниченое по размерам. от нуля до размера(allowedChars -1) password += allowedChars[index];//формируется пароль по одному символу из allowedChars } std::cout << password << std::endl;//вывод пароля } return 0; }