Определение качества введённого пароля - C#
Формулировка задачи:
Помогите пожалуйста написать программу для задачи (срочно, чтоб было понятно, что делал первокурсник) )
Генератор паролей
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
После ряда утечек конфиденциальной информации общественность всерьез задумалась о том, какие пароли следует использовать. Например, пароль «11111» — простой и его не следует использовать. Но как определить, хороший ли пароль?
Фондом Стандартизации Бизнес-процессов было проведено исследование, показавшее, что хороший пароль должен быть достаточно длинным и содержать символы разных видов. Исследование показало, что в хорошем пароле должно быть ровно n символов. Пароль должен состоять из заглавных и строчных букв латинского алфавита и цифр и удовлетворять следующим требованиям:
в пароле должно быть хотя бы a заглавных букв;
в пароле должно быть хотя бы b строчных букв;
в пароле должно быть хотя бы c цифр;
в пароле не должно быть двух одинаковых идущих подряд символов.
Понимая, что пользователям будет некомфортно придумывать пароль, удовлетворяющий всем этим требованиям, работники Фонда решили написать программу, призванную помочь пользователям в этом деле.
Помогите Фонду, напишите программу, которая по заданным параметрам генерирует подходящий пароль.
Формат ввода
В первой строке входного файла задано целое число n — требуемая длина пароля (1 ≤ n ≤ 100). Во второй строке заданы неотрицательные целые числа a, b и c — минимальное необходимое число заглавных букв, строчных букв и цифр, соответственно (a + b + c ≤ n).
Формат вывода
В единственной строке выведите любой хороший пароль. Допустимо использовать только заглавные и строчные латинские буквы, а также цифры.
Решение задачи: «Определение качества введённого пароля»
textual
Листинг программы
static string[] alp = { "ABCDEFGHIJKLMNOPQARTUVWXYZ", "abcdefghijklmnopqrstuvwxyz", "0123456789" }; const int a = 3, b = 3, c = 4, n = 10; static string GeneratePassword() { StringBuilder password = new StringBuilder(); Random r = new Random(); for (int i = 0; i<n; i++) { string alp1 = alp[r.Next(0, 3)];//Случайный выбор один из трех алфавитов password.Append(alp1[r.Next(0, alp1.Length)]);//Случайный выбор буквы из алфавита } return password.ToString(); } static string GenerateGoodPassword() { string pass = ""; if (n >= a + b + c) { while (pass.Count(x => char.IsUpper(x)) < a || pass.Count(x => char.IsLower(x)) < b || pass.Count(x => char.IsDigit(x)) < c) { pass = GeneratePassword(); } } else throw new Exception("Сумма чисел a, b, c должны быть меньше или равен n"); return pass; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д