/// <summary> /// Метод проверки выбора метода заполнения массива позльзователем. И собственно его заполнение. /// </summary> /// <param name="answer">Строка содержащая ответ пользователя</param> /// <param name="arrTusk2">Получившийся массив</param> /// <returns></returns> static bool CheckAnswerInitArrTusk2(out string answer, out MyIntArray arrTusk2) { arrTusk2 = new MyIntArray(); Console.Write("Введите способ заполнения массива:\n1. Массив с заданной размерностью, начальным элементом и шагом заполнения\n2. Запись массива из файла\nДля выхода нажмите 0\nВаш выбор=>"); answer = Console.ReadLine(); if (answer == "1") { GetArrTusk2User(ref arrTusk2); return(false); } else if (answer == "2") { var fileName = AppDomain.CurrentDomain.BaseDirectory; string answ; do { //R:\Учёба\Разработчик игр\Основы С#\Lesson4\BC_HW_L4_Malov\BC_HW_L4_Malov\MyIntArray.txt Console.Write("Введите имя искомого файла, включая расширение.(Файл должен находиться в базовой директории)\nЧтобы воспользоваться дефолтным файлом введите 1, или MyIntArray.txt\nДля выхода нажимте 0\nВаш ответ=>"); answ = Console.ReadLine(); if (answ == "1") { fileName = fileName + "MyIntArray.txt"; arrTusk2 = new MyIntArray(fileName); } else if (File.Exists(fileName = fileName + answ)) { arrTusk2 = new MyIntArray(fileName); } else { Console.WriteLine("Файл не найден. Проверьте правильность названия файла и попробуйте ещё раз."); } } while (File.Exists(fileName) != true && answ != "0"); if (answ == "0") { Console.WriteLine("Конструктор создания массива из файла был остановлен пользователем"); return(true); } else { return(false); } } else if (answer == "0") { return(true); } else { Console.WriteLine("Введён не корректный номер метода заполнения массива. Повторите ввод!"); return(true); } }
static void RunTusk1() { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Задание 1 к уроку 4\nДан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от –10 000 до 10 000 включительно. Написать программу, позволяющую найти и вывести количество пар элементов массива, в которых хотя бы одно число делится на 3.\n--------------------------"); MyIntArray arrayForTusk1 = new MyIntArray(20, 10000); arrayForTusk1.Print(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine($"количество пар элементов массива, в которых хотя бы одно число делится на 3 => {arrayForTusk1.MultiplesOfThree()}"); Console.ResetColor(); Console.ReadKey(); Console.Clear(); }
/// <summary> /// Метод инициализации массива заданной размерностью, начальным элементом и шагом заполнения пользователем. Парамаетры запрашиваются у пользователя и проверяются. /// </summary> /// <param name="arrTusk2">Одномерный массив для заполнения</param> static void GetArrTusk2User(ref MyIntArray arrTusk2) { uint len; int start, gap; bool flag = true; Console.WriteLine("Инициализация массива с заданной размерностью, начальным элементом и шагом заполнения."); do { Console.Write("Введите размерность массива=>"); if (uint.TryParse(Console.ReadLine(), out len) && len != 0) { flag = false; do { Console.Write("Введите значение стартового элемента=>"); if (int.TryParse(Console.ReadLine(), out start)) { flag = false; do { Console.Write("Введите шаг =>"); if (int.TryParse(Console.ReadLine(), out gap)) { flag = false; arrTusk2 = new MyIntArray(len, start, gap); } else { Console.WriteLine("Введён не корректный шаг. Повторите ввод!"); flag = true; } }while (flag); } else { flag = true; Console.WriteLine("Введён не корректное значение стартового эллемента. Повторите ввод!"); } }while (flag); } else { flag = true; Console.WriteLine("Введена не корректная размерность массива. Повторите ввод!"); } } while (flag); }
public int MaxCount(out int max) { max = arr.Max(); int maxcount = 0; MyIntArray temparr = new MyIntArray(arr); System.Array.Sort(temparr.arr); for (int i = temparr.arr.Length - 1; i >= 0; i--) { if (temparr[i] != max) { break; } else { maxcount++; } } return(maxcount); }
/// <summary> /// Метод выбора действия с активным массивом и запуска действия. /// </summary> /// <param name="arrTusk2">Массив</param> static void CheckWhatDoTusk2(MyIntArray arrTusk2, string answer) { do { Console.Clear(); Console.WriteLine("У нас получился следующий массив:"); arrTusk2.Print(); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Выберите действие, которое хотите совершить с данным массивом:\n1.Посчитать сумму элементов\n2.Умножить каждый элемент на заданное число\n3.Поменять знак у каждого элемента на противоположный\n4.Посчитать кол-во максимальных элементов\n5.Записать массив в файл\nДля выхода в меню создания массива введите 0\nВаш выбор=>"); answer = Console.ReadLine(); if (answer == "1") { Console.WriteLine($"Сумма элементов активного массива = {arrTusk2.Sum()}"); Console.ReadKey(); } else if (answer == "2") { bool flag = true; do { Console.WriteLine("Введите число на которое хотите умножить массив"); if (int.TryParse(Console.ReadLine(), out int number)) { Console.WriteLine($"При умножении на число {number} получится следующий массив:"); arrTusk2.Multi(number); arrTusk2.Print(); flag = false; } else { Console.WriteLine("Введён не корректный множитель. Повторите ввод!"); } } while (flag); Console.ReadKey(); } else if (answer == "3") { arrTusk2.Inverse(); arrTusk2.Print(); Console.ReadKey(); } else if (answer == "4") { Console.WriteLine($"Количество максимальных элементов = {arrTusk2.MaxCount(out int max)}\n Сам максимальный элемент = {max}"); Console.ReadKey(); } else if (answer == "5") { Console.WriteLine("Введите имя файла базовой директории, в который вы хотите записать массив.\nЕсли файл не будет найден, вам предложат его создать в базовой директории"); string fileName = Console.ReadLine(); arrTusk2.PrintToFile(fileName); Console.ReadKey(); } else if (answer != "0") { Console.WriteLine("Вы ввели не корректный номер действия. Повторите ввод!"); } } while (answer != "0"); }