Алгоритм подсчёта количества рабочих дней

При разработке программного обеспечения, направленного на использование в каких-либо производственных процессах, частой является задача расчёта количества рабочих дней в заданном диапазоне дат. Также могут применяться и другие задачи, например, прибавить (или отнять) определенное количество рабочих дней от заданной даты и так далее. В большинстве случаев, рабочими считаются дни с понедельника по пятницу, исключая национальные праздники. При этом, например, в Российской Федерации может использоваться как шести-, так и пятидневная рабочая неделя, а праздничные и рабочие дни могут переноситься. В этой статье мы попытаемся разработать свой собственный класс, реализующий подсчет рабочих дней в заданном диапазоне, а также, при необходимости добавление и вычитание рабочих дней из определенной даты.

Читать далее

Алгоритм перевода чисел из арабской системы в римскую и обратно

Как известно, в римской системе счисления для обозначения цифр используются комбинации букв латинского алфавита — I, II, III, IV и т.д. В этой статье рассмотрим один из вариантов алгоритма перевода числа из арабской системы в римскую и обратно.

Читать далее

Поиск наибольшей повторяющейся последовательности символов

Последовательность — это некий упорядоченный набор элементов. Строка — это частный случай последовательности. В свою очередь, под термином «наибольшая общая подстрока» мы будем понимать такую подстроку максимальной длины, которая входит в две или больше строки. Представленный ниже алгоритм также подойдет и для поиска наибольшей повторяющейся последовательности не только букв, но и, в принципе, любых символов, например, цифр.

Читать далее

Алгоритмы поиска простых чисел в C#

Простое число — это целое положительное число, имеющее ровно два различных натуральных делителя — единицу и самого себя. Определение того является ли число простым или нет — это одна из самых распространенных задач, решаемых в рамках курса лабораторных работ по информатике. Ниже будет представлена реализация алгоритма поиска простых чисел в C#, а также использование различных циклов для вывода простых чисел.

Читать далее

Алгоритм вычисления площади многоугольника

Расчёт площади многоугольника — это одна из наиболее распространенных задач вычислительной геометрии. Варианты решения этой задачи зависят от способа условий задачи. Так, если многоугольник задан в виде упорядоченного набора координат его вершин, то задача о нахождении площади многоугольника формулируется следующим образом: площадь многоугольника — замкнутой ломаной без самопересечений, заданной своими вершинами в порядке обхода, вычисляется по формуле:

где X0,Y0 = Xn+1,Yn+1 (координаты последней точки совпадают с первой). Таким образом, реализация алгоритма вычисления площади многоугольника в C# может базироваться как на использовании «простых» типов данных, например, с использованием массивов, так и на использовании списков (List, LinkedList). Сегодня рассмотрим вариант реализации алгоритма определения площади многоугольника с использованием двусвязного списка.

Читать далее

Алгоритм обхода дерева каталогов в C# без рекурсии

Наиболее часто, при решении типовой задачи обхода дерева каталогов в C# используется алгоритм с использованием рекурсии. Однако, это не единственный из возможных вариантов решения. Сегодня мы рассмотрим алгоритм обхода дерева папок без использования рекурсии. Для работы нам понадобится знание работы стека.

Читать далее

Алгоритм обхода дерева каталогов в C# с использованием рекурсии

Необходимо вывести список всех файлов, расположенных в определенной папке, включая файлы, которые находятся в подпапках. Это одна из типовых задач в программировании и решений этой задачи, как и любой другой, есть несколько. Наиболее простым является решение с использованием уже готовых методов класса DirectoryInfo. Однако, такой подход не всегда приводит к желаемому результату, например, в том случае, если доступ к определенному каталогу запрещен для текущего пользователя. В этом случае нам приходится реализовывать свой собственный алгоритм обхода дерева каталогов в C#.

Читать далее

Как создать уникальный идентификатор в C#?

Уникальные идентификаторы используются довольно при разработке программного обеспечения. Например, в URL различных сервисов, для индексирования каких-либо данных и так далее. При этом, практически каждый программист использует свой собственный подход к созданию идентификатора в зависимости от того, какие цели преследуются. Например, идентификатор может содержать какие-либо полезные данные (дата создания элемента, другие идентификаторы и т.д.). Здесь я рассмотрю несколько вариантов создания уникальных идентификаторов с использованием C#.

Читать далее

Алгоритм нахождения последовательностей чисел в C#

Необходимо найти и вывести на экран все последовательности длины N из чисел 1,2,...,M. Это одна из типовых задач программирования, с которой, думаю, каждый хотя бы раз в том или ином виде сталкивался или столкнется при работе над каким-либо проектом. И в этой статье, посвященной различным алгоритмам, реализованным на языке C# мы и решим эту саму задачу о поиске всех возможных последовательностей.

Читать далее

Сортировка массива C#. Алгоритм «Сортировка вставками»

Сортировка вставками — это алгоритм, в котором элементы массива просматриваются по одному, и каждый элемент элемент размещается в подходящее место среди ранее упорядоченных элементов. С этим алгоритмом сортировки многие из нас сталкиваются в жизни, не подозревая, что используют сортировку вставками — когда сортируют деньги в кошельке. Например, вы получаете в магазине сдачу — 550 рублей. Открываете кошелек — там лежит 200, 1000 и 5000 рублей. Те, кто любит порядок делают так: берут 50 рублей и вставляют их в подходящее место (в самое начало), затем берут 500 рублей и вставляют между 200 и 1000 рублями и в итоге получают упорядоченный «массив» денег 50, 200, 500, 1000 и 5000 рублей. Вот наглядный пример сортировки вставками. Этот алгоритм чем-то напоминает гномью сортировку, но требует вложенного массива.

Читать далее