Пример #1
0
            /// <summary>
            /// записать массив на диск
            /// </summary>
            /// <param name="curArray">массив</param>
            /// <param name="fileName">имя файла</param>
            /// <returns>результат записи</returns>
            public static bool SafeArrayToDisk(int[] curArray, string fileName)
            {
                StreamWriter stream = null;

                bool flag = true;

                try
                {
                    stream = new StreamWriter(fileName, false);
                    foreach (var item in curArray)
                    {
                        stream.WriteLine(item);
                    }
                    stream.Close();
                }
                catch (DirectoryNotFoundException ex)
                {
                    ClassLibraryLesson4.Print($"Каталог не обнаружен! {ex.Message}");
                    flag = false;
                }
                catch (Exception ex)
                {
                    ClassLibraryLesson4.Print($"Что-то пошло не так! {ex.Message}");
                    flag = false;
                }

                return(flag);
            }
Пример #2
0
            /// <summary>
            /// вывод на экран консоли в одну строку содержимого массива
            /// </summary>
            /// <param name="curArray">массив</param>
            public static void PrintArray(int[] curArray)
            {
                foreach (var item in curArray)
                {
                    ClassLibraryLesson4.Print(item.ToString() + " ", false);
                }

                ClassLibraryLesson4.Print("\n");
            }
Пример #3
0
        public static void Task1()
        {
            string welcome = "Вы выбрали демонстрацию работы с массивом.\n";

            welcome = welcome + "Это интересно!\n";
            welcome = welcome + "Давайте начнем\n";

            ClassLibraryLesson4.PrintTaskWelcomeScreen(welcome);

            int[] arrayNumbers = new int[20];

            //рандом генератор
            Random rand = new Random();

            //заполнение массива
            for (int counter = 0; counter < arrayNumbers.Length; counter++)
            {
                arrayNumbers[counter] = rand.Next(-10000, 10000);
            }

            //вывод массива на экран
            ClassLibraryLesson4.Print("Содержимое массива:");
            foreach (var item in arrayNumbers)
            {
                ClassLibraryLesson4.Print(item.ToString() + " ", false);
            }

            ClassLibraryLesson4.Print("\n");

            //перебор пар

            ClassLibraryLesson4.Print("Анализируем пары...");

            ushort    counterPairs = 0;
            const int denominator  = 3;

            for (int counter = 0; counter < arrayNumbers.Length - 1; counter++)
            {
                ClassLibraryLesson4.Print($"{arrayNumbers[counter]} {arrayNumbers[counter + 1]}");

                if (arrayNumbers[counter] % denominator == 0 ^ arrayNumbers[counter + 1] % denominator == 0)
                {
                    counterPairs++;
                }
            }

            ClassLibraryLesson4.Print("");
            ClassLibraryLesson4.Print($"Найдено {counterPairs} пар, где только одно из значений делится на  {denominator}");
            ClassLibraryLesson4.Pause("Нажмите любую клавишу.");
        }
        static void StartMenu()
        {
            string Welcome = "Добрый день, пользователь!\n";

            Welcome = Welcome + "Выберите чем бы Вы хотели заняться:\n";
            Welcome = Welcome + "Меню на сегодня:\n";
            Welcome = Welcome + "1 - Работа массивом\n";
            Welcome = Welcome + "2 - Работа массивом в виде класса\n";
            Welcome = Welcome + "3 - Работа массивом в виде класса (продолжение)\n";
            Welcome = Welcome + "4 - Подбор пароля по вариантам из файла\n";

            Welcome = Welcome + "0 - Выход из программы\n";

            while (true)
            {
                ClassLibraryLesson4.PrintTaskWelcomeScreen(Welcome);

                ConsoleKeyInfo userChooseKey = Console.ReadKey(true);

                switch (userChooseKey.Key)
                {
                case ConsoleKey.D1:
                case ConsoleKey.NumPad1:
                    Task1();
                    break;

                case ConsoleKey.D2:
                case ConsoleKey.NumPad2:
                    Task2();
                    break;

                case ConsoleKey.D3:
                case ConsoleKey.NumPad3:
                    Task3();
                    break;

                case ConsoleKey.D4:
                case ConsoleKey.NumPad4:
                    Task4();
                    break;

                case ConsoleKey.D0:
                case ConsoleKey.NumPad0:
                    Environment.Exit(0);     // на выход
                    break;
                }
            }
        }
Пример #5
0
        public static void Task2()
        {
            string welcome = "Вы выбрали демонстрацию работы с массивом в виде статического класса.\n";

            welcome = welcome + "Давайте начнем\n";

            ClassLibraryLesson4.PrintTaskWelcomeScreen(welcome);

            int[] arrayNumbers = new int[20];

            //заполнение массива оставим старым из Task1
            Random rand = new Random();

            for (int counter = 0; counter < arrayNumbers.Length; counter++)
            {
                arrayNumbers[counter] = rand.Next(-10000, 10000);
            }

            //вывод массива на экран
            ClassLibraryLesson4.Print("Содержимое массива:");
            StaticClass.PrintArray(arrayNumbers);

            //перебор пар
            ClassLibraryLesson4.Print("Анализируем пары...");
            const int denominator = 3;

            uint counterPairs = StaticClass.CountArrayPairs(arrayNumbers, denominator);

            ClassLibraryLesson4.Print("");
            ClassLibraryLesson4.Print($"Найдено {counterPairs} пар, где только одно из значений делится на  {denominator}");

            string file = Path.GetTempPath() + "array.txt";

            ClassLibraryLesson4.Print($"Сохранение массива в файл: {file}");

            bool saveStatus = StaticClass.SafeArrayToDisk(arrayNumbers, file);

            if (saveStatus)
            {
                ClassLibraryLesson4.Print("Запись успешна.");
            }

            ClassLibraryLesson4.Pause("Нажмите любую клавишу.");
        }
Пример #6
0
        public static void Task4()
        {
            string Welcome = "Вы выбрали задачу подбора логина и пароля из файла\n";

            Welcome = Welcome + "Давайте начнем.\n";

            ClassLibraryLesson4.PrintTaskWelcomeScreen(Welcome);

            //string file = @"C:\Temp\p.txt";
            string file = ClassLibraryLesson4.MakeQuestion("имя файла");

            List <Account> accounts = ReadAccountsFromFile(file);

            if (accounts.Count == 0)
            {
                ClassLibraryLesson4.Print("Чтение файла с данными паролей неудачно!");
            }
            else
            {
                bool successFlag = false;

                //главный логин
                Account rootAccount;
                rootAccount.Login    = "******";
                rootAccount.Password = "******";

                foreach (var item in accounts)
                {
                    if (item.Equals(rootAccount))
                    {
                        ClassLibraryLesson4.Print($"Подошло: {item.ToString()}");
                        successFlag = true;
                    }
                }

                if (!(successFlag))
                {
                    ClassLibraryLesson4.Print("Ничего из файла не подошло!");
                }
            }
            ClassLibraryLesson4.Pause("Нажмите любую клавишу.");
        }
Пример #7
0
            /// <summary>
            /// подсчитывает число "пар" в массив
            /// </summary>
            /// <param name="arrayPairs">массив</param>
            /// <param name="denom"></param>
            /// <returns>количество пар</returns>
            public static uint CountArrayPairs(int[] arrayPairs, uint denom)
            {
                if (denom < 1)
                {
                    throw new ArgumentException("Делитель для поиска пар не может быть равен 0!");
                }

                ushort countPairs = 0;

                for (int counter = 0; counter < arrayPairs.Length - 1; counter++)
                {
                    ClassLibraryLesson4.Print($"{arrayPairs[counter]} {arrayPairs[counter + 1]}");

                    if (arrayPairs[counter] % denom == 0 ^ arrayPairs[counter + 1] % denom == 0)
                    {
                        countPairs++;
                    }
                }

                return(countPairs);
            }
Пример #8
0
        public static List <Account> ReadAccountsFromFile(string fileName)
        {
            List <Account> result = new List <Account> {
            };

            StreamReader stream = null;

            try
            {
                stream = new StreamReader(fileName);
                while (!(stream.EndOfStream))
                {
                    string   textLine = stream.ReadLine();
                    string[] logPass  = ClassLibraryLesson4.SplitString(textLine, ",");
                    try
                    {
                        Account acc;
                        acc.Login    = logPass[0];
                        acc.Password = (logPass.Length > 1) ? logPass[1] : "";

                        result.Add(acc);
                    }
                    catch (Exception ex)
                    {
                        ClassLibraryLesson4.Print($"Ошибка преобразования строки: {textLine} в структуру Account {ex.Message}");
                    }
                }
                //пустые строки игнорируем
                stream.Close();
            }
            catch (Exception ex)
            {
                ClassLibraryLesson4.Print($"Что-то пошло не так! {ex.Message}");
            }
            return(result);
        }
Пример #9
0
        public static void Task3()
        {
            string welcome = "Вы выбрали демонстрацию работы с массивом в виде статического класса (продолжение).\n";

            welcome = welcome + "Давайте начнем\n";

            ClassLibraryLesson4.PrintTaskWelcomeScreen(welcome);

            // 10000 большой разбег не будет "показательно" работать частотный словарь
            //StaticClass_Task3 objectStaticClass_Task3 = new StaticClass_Task3(20, -10000, 10000);

            StaticClass_Task3 objectStaticClass_Task3 = new StaticClass_Task3(20, 1, 10);

            //вывод массива на экран
            ClassLibraryLesson4.Print("Содержимое массива:");
            StaticClass_Task3.PrintArray(objectStaticClass_Task3.Array);

            //перебор пар
            ClassLibraryLesson4.Print("Анализируем пары...");
            const int denominator = 3;

            uint counterPairs = StaticClass_Task3.CountArrayPairs(objectStaticClass_Task3.Array, denominator);

            ClassLibraryLesson4.Print("");
            ClassLibraryLesson4.Print($"Найдено {counterPairs} пар, где только одно из значений делится на  {denominator}");

            string file = Path.GetTempPath() + "array.txt";

            //запись на диск
            ClassLibraryLesson4.Print($"Сохранение массива в файл: {file}");

            bool saveStatus = StaticClass_Task3.SafeArrayToDisk(objectStaticClass_Task3.Array, file);

            if (saveStatus)
            {
                ClassLibraryLesson4.Print("Запись успешна.");
            }

            //сумма элементов
            ClassLibraryLesson4.Print($"Сумма элементов массива: {objectStaticClass_Task3.Sum}");

            //умножение
            int multi = 5;

            ClassLibraryLesson4.Print($"Умножение массива на {multi}:");

            objectStaticClass_Task3.Multi(multi);

            ClassLibraryLesson4.Print("Содержимое массива:");
            StaticClass_Task3.PrintArray(objectStaticClass_Task3.Array);

            //инверсия

            ClassLibraryLesson4.Print("Инверсия массива:");

            int[] inverseArray = objectStaticClass_Task3.Inverse();

            ClassLibraryLesson4.Print("Содержимое массива:");
            StaticClass_Task3.PrintArray(inverseArray);

            //поиск количества максимальных значений
            ClassLibraryLesson4.Print($"Количество максимальных значений: {objectStaticClass_Task3.MaxCount}");

            ClassLibraryLesson4.Print("\n");

            //частотный словарь

            ClassLibraryLesson4.Print("Частотный словарь");
            Dictionary <int, int> dictFreq = objectStaticClass_Task3.DictFrequency;

            foreach (KeyValuePair <int, int> item in dictFreq)
            {
                ClassLibraryLesson4.Print($"Значение: {item.Key} частота: {item.Value}");
            }

            ClassLibraryLesson4.Pause("Нажмите любую клавишу.");
        }