Задача: Написать программу, которая из имеющегося массива строк формирует новый массив из строк, длина которых меньше, либо равна 3 символам. Первоначальный массив можно ввести с клавиатуры, либо задать на старте выполнения алгоритма. При решении не рекомендуется пользоваться коллекциями, лучше обойтись исключительно массивами.
Содержание:
1. Основной метод (Main)
2. Метод решения задачи
3. Метод ввода целых чисел
4. Метод ручного заполнения массива
5. Метод автоматического заполнения массива
6. Метод отбора значений в новый массив
7. Метод выбора случайных значений
Основной метод программы представляет собой меню, организованное внутри бесконечного цикла. Меню позволяет посредством оператора switch выбрать способ заполнения стартового массива строк, либо завершить выполнение программы. Выбор способа заполнения массива выполняется посредством передачи методу TaskStr() соответствующего логического параметра.
Метод TaskStr() обеспечивает выполнение основных операций для решения поставленной задачи. Для этого в методе последовательно вызываются другие методы обеспечивающие выполнение необходимых действий.
Изначально, посредством метода SetNumber(), выполняется запрос к пользователю, с просьбой ввести количество элементов стартового массива. Затем, посредством оператора выбора, на основе переданного методу логического параметра autoArray, массив заполняется значениями. Для этого вызывается либо метод ManualArrayComplet(), для ручного заполнения пользователем с клавиатуры, либо вызывается метод AutoArrayComplet(), для автоматического заполнения массива строками из внешнего источника. Заданный массив выводится на экран посредством метода string.Join.
После этого стартовый массив передаётся методу StrMinLenArray(), который формирует новый массив строк, соответствующих заданной их длине.
Новый массив выводится на экран посредством метода string.Join, после чего организуется пауза, вплоть до нажатия пользователем любой клавиши, с помощью оператора Console.ReadKey().
После нажатия клавиши осуществляется возврат к главному меню программы.
Данный метод выводит принятую в качестве параметра строку текста, в качестве запроса к пользователю, после чего ожидает ввода строки. Принятая строка преобразуется в целое числовое значение, передаваемое переменной num. После чего осуществляется возврат значения переменной num.
Данный метод в цикле запрашивает от пользователя значения элементов, с последующим возвратом заполненного массива.
Данный метод заполняет массив заданной размерности случайтыми значениями возвращаемыми методом StrArray(). После объявления массива заданной длины, запрашивается размер хранилища строк вызовом метода StrArray() с нулевым параметром. Возвращённое значение переменной rndMax используется как верхняя граница генератора случайных чисел, посредством которого генерируются индексы хранилища строк, для заполнения, в цикле, стартового массива.
Данный метод решает основную задачу, выбирает из стартового массива значения отвечающие требованиям к длине строки, и формирует из них новый массив.
Так как при выполнении задачи рекомендуется использовать только стандартные циклы, в данном методе используются два цикла и вспомогательный массив arrayTemp[], используемый для хранения индексов найденных строк искомой длины.
В первом цикле осуществляется проверка всех элементов заданного массива на соответствие их длины заданным параметрам. Индексы найденных элементов последовательно заносятся в массив arrayTemp[], при этом ведётся подсчёт найденных элементов посредством переменной resultLen.
Далее объяыляется массив result длиной resultLen, который заполняется элементами стартового массива, посредством второго цикла. После чего метод возвращает полученный массив result.
Блок-схема данного алгоритма представлена ни рисунке ниже.
Данный метод возвращает строковое значение из одномерного индексированного хранилища, в соответствие с принятым индексом.
В качестве хранилища, в рамках данной работы, использован одномерный строковый массив, находящийся внутри метода. При необходимости выбора строк из какого-либо внешнего источника, необходимо лишь изменить данный метод. При этом остальные методы программы останутся неизменными. Данный способ хранения строковых значений выбран лишь для повышения универсальности данной программы.
Также метод возвращает значение вспомогательной переменной rndMax, в которую заносится размер хранилища.
