From ebf367ef84966e0946cc4702c06416d15341d7cf Mon Sep 17 00:00:00 2001 From: tellsense Date: Sun, 29 Oct 2023 19:02:01 +0400 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20SetGeneri?= =?UTF-8?q?c=20(=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=D0=BE=204=20=D0=BB=D0=B0?= =?UTF-8?q?=D0=B1=D1=8B).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ElectricLocomotive/SetGeneric.cs | 129 ++++++++++++------ 1 file changed, 84 insertions(+), 45 deletions(-) diff --git a/ElectricLocomotive/ElectricLocomotive/SetGeneric.cs b/ElectricLocomotive/ElectricLocomotive/SetGeneric.cs index 60c65ce..223eb4d 100644 --- a/ElectricLocomotive/ElectricLocomotive/SetGeneric.cs +++ b/ElectricLocomotive/ElectricLocomotive/SetGeneric.cs @@ -7,59 +7,98 @@ using System.Threading.Tasks; namespace ProjectElectricLocomotive.Generics { internal class SetGeneric - where T : class + where T : class { - private readonly T?[] _places; - public int Count => _places.Length; + /// + /// Список объектов, которые храним + /// + private readonly List _places; + /// + /// Количество объектов в массиве + /// + public int Count => _places.Count; + /// + /// Максимальное количество объектов в списке + /// + private readonly int _maxCount; + /// + /// Конструктор + /// + /// public SetGeneric(int count) { - _places = new T?[count]; + _maxCount = count; + _places = new List(count); } - public int Insert(T locomotive) + /// + /// Добавление объекта в набор + /// + /// Добавляемый автомобиль + /// + public bool Insert(T car) { - return Insert(locomotive, 0); - } - public int Insert(T locomotive, int position) - { - int Full = 0; - int temp = 0; - for (int i = position; i < Count; i++) - { - if (_places[i] != null) Full++; - } - if (Full == Count - position - 1) - return -1; - if (position < Count && position >= 0) - { - for (int j = position; j < Count; j++) - { - if (_places[j] == null) - { - temp = j; - break; - } - } - for (int i = temp; i > position; i--) - { - _places[i] = _places[i - 1]; - } - _places[position] = locomotive; - return position; - } - return -1; - } - public bool Remove(int position) - { - if (position >= Count || position < 0) - if (!(position >= 0 && position < Count) || _places[position] == null) - return false; - _places[position] = null; + // TODO вставка в начало набора return true; } - public T Get(int position) + /// + /// Добавление объекта в набор на конкретную позицию + /// + /// Добавляемый автомобиль + /// Позиция + /// + public bool Insert(T car, int position) { - if (position < 0 || position >= Count) return null; - return _places[position]; + // TODO проверка позиции + // TODO проверка, что есть место для вставки + // TODO вставка по позиции + _places[position] = car; + return true; + } + /// + /// Удаление объекта из набора с конкретной позиции + /// + /// + /// + public bool Remove(int position) + { + // TODO проверка позиции + // TODO удаление объекта из списка + return true; + } + /// + /// Получение объекта из набора по позиции + /// + /// + /// + public T? this[int position] + { + get + { + // TODO проверка позиции + return _places[position]; + } + set + { + // TODO проверка позиции + // TODO проверка свободных мест в списке + // TODO вставка в список по позиции + } + } + /// + /// Проход по списку + /// + /// + public IEnumerable GetCars(int? maxCars = null) + { + for (int i = 0; i < _places.Count; ++i) + { + yield return _places[i]; + if (maxCars.HasValue && i == maxCars.Value) + { + yield break; + } + } } } + }