From 7fe1682f7bd2f65c9f89b73cf9ea3bc916748bb6 Mon Sep 17 00:00:00 2001 From: sqdselo <147947144+sqdselo@users.noreply.github.com> Date: Sun, 17 Mar 2024 23:37:52 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D0=BB=D0=BB=D0=B5=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ICollectionGenericObjects.cs | 51 +++++++++ .../MassivGenericObjects.cs | 101 ++++++++++++++++++ 2 files changed, 152 insertions(+) create mode 100644 HoistingCrane/HoistingCrane/CollectionGenericObjects/ICollectionGenericObjects.cs create mode 100644 HoistingCrane/HoistingCrane/CollectionGenericObjects/MassivGenericObjects.cs diff --git a/HoistingCrane/HoistingCrane/CollectionGenericObjects/ICollectionGenericObjects.cs b/HoistingCrane/HoistingCrane/CollectionGenericObjects/ICollectionGenericObjects.cs new file mode 100644 index 0000000..8930946 --- /dev/null +++ b/HoistingCrane/HoistingCrane/CollectionGenericObjects/ICollectionGenericObjects.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HoistingCrane.CollectionGenericObjects +{ + internal interface ICollectionGenericObjects + where T : class + { + /// + /// Колличество объектов в коллекции + /// + int Count { get; } + + /// + /// Максимальная вместимость коллекции("гаража") + /// + int SetMaxCount { set; } + + /// + /// Добавление элемента в коллекцию на свободную позицию + /// + /// Добавляемый объект + /// + bool Insert(T obj); + + /// + /// Добавление элемента в коллекцию на конкретное место + /// + /// Добовляемый объект + /// Позиция объекта + /// + bool Insert(T obj, int pos); + + /// + /// Удаление конкретного элемента коллекции + /// + /// Номер позиции + /// + bool Remove(int pos); + + /// + /// Получение элемента коллекции по индексу + /// + /// Индекс элемента + /// + T? Get(int pos); + } +} diff --git a/HoistingCrane/HoistingCrane/CollectionGenericObjects/MassivGenericObjects.cs b/HoistingCrane/HoistingCrane/CollectionGenericObjects/MassivGenericObjects.cs new file mode 100644 index 0000000..36373be --- /dev/null +++ b/HoistingCrane/HoistingCrane/CollectionGenericObjects/MassivGenericObjects.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HoistingCrane.CollectionGenericObjects +{ + internal class MassivGenericObjects : ICollectionGenericObjects + where T : class + { + /// + /// Создание массива типа + /// + private T[] array; + + /// + /// Конструктор класса + /// + public MassivGenericObjects() + { + array = Array.Empty(); + } + + /// + /// Кол-во элементов массива + /// + public int Count => array.Length; + + public int SetMaxCount { set { if (value > 0) array = new T[value]; } } + + public T? Get(int pos) + { + return array[pos]; + } + + /// + /// Вставка элемента в свободную позицию(с начала) + /// + /// + /// + public bool Insert(T obj) + { + for(int i = 0; i < Count; i++) + { + if (array[i] == null) return true; + } + return false; + } + /// + /// Вставка элемента в конкретную позицию + /// + /// + /// + /// + /// + public bool Insert(T obj, int pos) + { + bool flag = false; + if (array[pos] == null) + { + array[pos] = obj; + return true; + } + if (array[pos] != null) + { + for(int i = pos; i < Count; i++) + { + if (array[i] == null) + { + flag = true; + array[i] = obj; + return true; + } + } + if(flag == false) + { + for(int i = pos; i > 0; i--) + { + if (array[i] == null) + { + array[i] = obj; + return true; + } + } + } + } + return false; + } + + public bool Remove(int pos) + { + if (array[pos] != null) + { + return true; + } + return false; + + } + } +}