Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият.
Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание.
Използваме бисквитки и за измерване на маркетинговите ни усилия.
using System;
using System.Text;
class Program
{
static void Main()
{
string password = Console.ReadLine();
string command;
while ((command = Console.ReadLine()) != "Complete")
{
string[] commandArgs = command.Split();
string action = commandArgs[0];
switch (action)
{
case "Make":
string makeAction = commandArgs[1];
int index = int.Parse(commandArgs[2]);
if (index >= 0 && index < password.Length)
{
if (makeAction == "Upper")
{
password = ReplaceCharAtIndex(password, char.ToUpper(password[index]), index);
}
else if (makeAction == "Lower")
{
password = ReplaceCharAtIndex(password, char.ToLower(password[index]), index);
}
Console.WriteLine(password);
}
break;
case "Insert":
int insertIndex = int.Parse(commandArgs[1]);
string insertChar = commandArgs[2];
if (insertIndex >= 0 && insertIndex <= password.Length)
{
password = InsertCharAtIndex(password, insertChar[0], insertIndex);
Console.WriteLine(password);
}
break;
case "Replace":
char replaceChar = commandArgs[1][0];
int replaceValue = int.Parse(commandArgs[2]);
if (password.Contains(replaceChar))
{
int newCharValue = replaceChar + replaceValue;
char newChar = (char)newCharValue;
password = password.Replace(replaceChar, newChar);
Console.WriteLine(password);
}
break;
case "Validation":
ValidatePassword(password);
break;
default:
// Ignore invalid command
break;
}
}
}
static string ReplaceCharAtIndex(string str, char newChar, int index)
{
StringBuilder sb = new StringBuilder(str);
sb[index] = newChar;
return sb.ToString();
}
static string InsertCharAtIndex(string str, char insertChar, int index)
{
StringBuilder sb = new StringBuilder(str);
sb.Insert(index, insertChar);
return sb.ToString();
}
static void ValidatePassword(string password)
{
bool isValid = true;
if (password.Length < 8)
{
Console.WriteLine("Password must be at least 8 characters long!");
isValid = false;
}
if (!ContainsOnlyLettersDigitsUnderscore(password))
{
Console.WriteLine("Password must consist only of letters, digits and underscore!");
isValid = false;
}
if (!ContainsUpperCaseLetter(password))
{
Console.WriteLine("Password must consist at least one uppercase letter!");
isValid = false;
}
if (!ContainsLowerCaseLetter(password))
{
Console.WriteLine("Password must consist at least one lowercase letter!");
isValid = false;
}
if (!ContainsDigit(password))
{
Console.WriteLine("Password must consist at least one digit!");
isValid = false;
}
if (isValid)
{
Console.WriteLine("Password is valid");
}
}
static bool ContainsOnlyLettersDigitsUnderscore(string password)
{
foreach (char ch in password)
{
if (!char.IsLetterOrDigit(ch) && ch != '_')
{
return false;
}
}
return true;
}
static bool ContainsUpperCaseLetter(string password)
{
foreach (char ch in password)
{
if (char.IsUpper(ch))
{
return true;
}
}
return false;
}
static bool ContainsLowerCaseLetter(string password)
{
foreach (char ch in password)
{
if (char.IsLower(ch))
{
return true;
}
}
return false;
}
static bool ContainsDigit(string password)
{
foreach (char ch in password)
{
if (char.IsDigit(ch))
{
return true;
}
}
return false;
}
}
77/100