/// <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); }
/// <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"); }
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; } } }
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("Нажмите любую клавишу."); }
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("Нажмите любую клавишу."); }
/// <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); }
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); }
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("Нажмите любую клавишу."); }