Нет описания

vivanov a7ac719875 lab 5 11 месяцев назад
.gitignore.txt 429e5ab52f first commit 11 месяцев назад
readme.md a7ac719875 lab 5 11 месяцев назад

readme.md

First exercise: "Номера автобусов"

Задачу я решил еще до того, как вы показывали нам его решение, поэтому я не стал ничего менять.

Первым делом я создал переменную, в которую поместил условие. Строчка кода выглядит данным образом:

string bukvi = @"^[A-Z]{1}\d{3}[A-Z]{2}$";

Данный способ записи условия нашел на просторах интернета.

Затем я использовал функцию: "Regex". Она позволяет проверять, подходят ли введенные вами данные условию. Строчка кода выглядит данным образом:

Regex check = new Regex(bukvi);

Затем я использовал цикл и проверял входные данные с условием. Строчка кода выглядит данным образом:

while (true)
{
    if (check.IsMatch(input))
    {
        Console.WriteLine("True");
        break;
    }

Полный код выглядит следующим образом:

using System.Text.RegularExpressions;

string bukvi = @"^[A-Z]{1}\d{3}[A-Z]{2}$";
Regex check = new Regex(bukvi);
Console.WriteLine();
string input = Console.ReadLine();
while (true)
{
    if (check.IsMatch(input))
    {
        Console.WriteLine("True");
        break;
    }
    else
    {
        Console.WriteLine("False");
        break;
    }
}

Second exercise: "Сжатие бинарных последовательностей"

Сначала я создал переменную: "no_way" и поместил туда весь английский алфавит. Затем запрашиваю данные от пользователя и создаю массив: "splt", в котором разделяю введенную строку, когда встречаю символ: "1". Дальше идет цикл для каждой подстроки в "splt". Затем идет определение длинны строки. И в конце, если длинна строка равна нулю, то вывести: "a", а если нет, то он выведет букву, соответствующей длинны строки.

string no_way = "absdefghijklmnopqrstuvwxyz";
string input = Console.ReadLine();
string[] splt = input.Split("1");
for (int i = 0; i < splt.Length-1; i++)
{
    int lng = splt[i].Length;
    if (splt[i].Length == 0)
    {
        Console.Write("a");
    }
    else
    {
        Console.Write(no_way[lng]);
    }
    
}

Third exercise: "Стрелки"

Решение данной задачи абсолютно такое же, как и решение первой. Код выглядит следующим образом:

using System.Text.RegularExpressions;

string arrow1 = ">>-->";
string arrow2 = "<--<<";
Regex check1 = new Regex(arrow1);
Regex check2 = new Regex(arrow2);
string input = Console.ReadLine();
while (true)
{
    if (check1.IsMatch(input))
    {
        Console.WriteLine("True");
        break;
    }
    else if (check2.IsMatch(input))
    {
        Console.WriteLine("True");
        break;
    }
    else
    {
        Console.WriteLine("False");
        break;
    }
}

Fourth exercise: "Нумеролог"

Сначала я запросил данные у пользователя и конвертировал их в цифры. Код выглядит следующим образом:

Console.Write("input your age: ");
string input = Console.ReadLine();
int age = Convert.ToInt32(input);

Затем преобразовал введенное количество лет в секунды. Потом идет цикл, проверка данных на число и затем сложил цифры получивсшегося числа.

int sum_age = (age*31536000);
Console.WriteLine("your age in sec: " + sum_age);
int sum = 0;
foreach (char digit in input)
{
    if (char.IsDigit(digit))
    {
        sum += int.Parse(digit.ToString());
    }
    Console.Write("I don't know what is it: " + sum);
}

Полный код выглядит таким образом:

Console.Write("input your age: ");
string input = Console.ReadLine();
int age = Convert.ToInt32(input);
int sum_age = (age*31536000);
Console.WriteLine("your age in sec: " + sum_age);
int sum = 0;
foreach (char digit in input)
{
    if (char.IsDigit(digit))
    {
        sum += int.Parse(digit.ToString());
    }
    Console.Write("I don't know what is it: " + sum);
}

Fifth exercise: "Перестановка"

Первым делом я запрашиваю данные у пользователя и переношу их на нижний регистр. Как я понял, это нужно для упрощенной работы с данными, ибо без этого моя программа работала не корректно. Код выглядит следующим образом:

Console.WriteLine("input first name: ");
string first_name = Console.ReadLine().ToLower();
Console.WriteLine("input second name: ");
string second_name = Console.ReadLine().ToLower();

Затем идет проверка с помощью метода IaAnagram. Он позволяет проверить можно ли получить одно имя из другого. Код выглядит так:

if (IsAnagram(first_name,second_name))
{
    Console.WriteLine("True");
}
else
{
    Console.WriteLine("False");
}

Дальше я создаю новые переменные и убираю пробелы с помощью того же метода IsAnagram. Код выглядит следующим образом:

static bool IsAnagram(string first_string, string second_string)
{
    first_string = first_string.Replace(" ", string.Empty);
    second_string = second_string.Replace(" ", string.Empty);

Затем я начинаю сравнивать длинну строк. Код выглядит таким образо:

if (first_string.Length != second_string.Length)
    {
        return false;
    }

Следующим делом я создаю массив и преобразую строки в массив. Код выглядит так:

char[] first_array = first_string.ToCharArray();
char[] second_array = second_string.ToCharArray();

Затем я отсортировал данные полученных мной массивов в алфавитный порядок. Код выглядит таким образом:

Array.Sort(first_array);
Array.Sort(second_array);

Следующими строчками кода я просто преобразовываю массивы обратно в строки и сравниваю их.

string final_array1 = new string(first_array);
string final_array2 = new string(second_array);

return final_array1 == final_array2;

Полный код выглядит таким образом:

Console.WriteLine("input first name: ");
string first_name = Console.ReadLine().ToLower();
Console.WriteLine("input second name: ");
string second_name = Console.ReadLine().ToLower();
if (IsAnagram(first_name,second_name))
{
    Console.WriteLine("True");
}
else
{
    Console.WriteLine("False");
}

static bool IsAnagram(string first_string, string second_string)
{
    first_string = first_string.Replace(" ", string.Empty);
    second_string = second_string.Replace(" ", string.Empty);

    if (first_string.Length != second_string.Length)
    {
        return false;
    }

    char[] first_array = first_string.ToCharArray();
    char[] second_array = second_string.ToCharArray();
    
    Array.Sort(first_array);
    Array.Sort(second_array);

    string final_array1 = new string(first_array);
    string final_array2 = new string(second_array);

    return final_array1 == final_array2;
}