Поменял типы возвращаемых значений

This commit is contained in:
insideq 2024-03-04 13:03:43 +04:00
parent 0c2d082758
commit b0b2cb60d8
4 changed files with 42 additions and 32 deletions

View File

@ -57,9 +57,9 @@ public abstract class AbstractCompany
/// <param name="company">Компания</param> /// <param name="company">Компания</param>
/// <param name="bulldozer">Добавляемый объект</param> /// <param name="bulldozer">Добавляемый объект</param>
/// <returns></returns> /// <returns></returns>
public static bool operator +(AbstractCompany company, DrawningBulldozer bulldozer) public static int operator +(AbstractCompany company, DrawningBulldozer bulldozer)
{ {
return company._collection?.Insert(bulldozer) ?? false; return company._collection.Insert(bulldozer);
} }
/// <summary> /// <summary>
@ -68,9 +68,9 @@ public abstract class AbstractCompany
/// <param name="company">Компания</param> /// <param name="company">Компания</param>
/// <param name="position">Номер удаляемого объекта</param> /// <param name="position">Номер удаляемого объекта</param>
/// <returns></returns> /// <returns></returns>
public static bool operator -(AbstractCompany company, int position) public static DrawningBulldozer operator -(AbstractCompany company, int position)
{ {
return company._collection?.Remove(position) ?? false; return company._collection.Remove(position);
} }
/// <summary> /// <summary>

View File

@ -22,7 +22,7 @@ public interface ICollectionGenericObjects<T>
/// </summary> /// </summary>
/// <param name="obj">Добавляемый объект</param> /// <param name="obj">Добавляемый объект</param>
/// <returns>true - вставка прошла успешно, false - вставка не удалась</returns> /// <returns>true - вставка прошла успешно, false - вставка не удалась</returns>
bool Insert(T obj); int Insert(T obj);
/// <summary> /// <summary>
/// Добавление элемента в коллекцию на конкретную позицию /// Добавление элемента в коллекцию на конкретную позицию
@ -30,14 +30,14 @@ public interface ICollectionGenericObjects<T>
/// <param name="obj">Добавляемый элемент</param> /// <param name="obj">Добавляемый элемент</param>
/// <param name="position">Позиция</param> /// <param name="position">Позиция</param>
/// <returns>true - вставка прошла успешно, false - вставка не удалась</returns> /// <returns>true - вставка прошла успешно, false - вставка не удалась</returns>
bool Insert(T obj, int position); int Insert(T obj, int position);
/// <summary> /// <summary>
/// Удаление объекта из коллекции с конкретной позиции /// Удаление объекта из коллекции с конкретной позиции
/// </summary> /// </summary>
/// <param name="position">Позиция</param> /// <param name="position">Позиция</param>
/// <returns>true - удаление прошло успешно, false - удаление не удалось</returns> /// <returns>true - удаление прошло успешно, false - удаление не удалось</returns>
bool Remove(int position); T? Remove(int position);
/// <summary> /// <summary>
/// Получение объекта по позиции /// Получение объекта по позиции

View File

@ -34,7 +34,7 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
return _collection[position]; return _collection[position];
} }
public bool Insert(T obj) public int Insert(T obj)
{ {
// TODO вставка в свободное место набора // TODO вставка в свободное место набора
int index = 0; int index = 0;
@ -43,14 +43,14 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
if (_collection[index] == null) if (_collection[index] == null)
{ {
_collection[index] = obj; _collection[index] = obj;
return true; return index;
} }
index++; index++;
} }
return false; return -1;
} }
public bool Insert(T obj, int position) public int Insert(T obj, int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO проверка, что элемент массива по этой позиции пустой, если нет, то // TODO проверка, что элемент массива по этой позиции пустой, если нет, то
@ -58,39 +58,49 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
// если нет после, ищем до // если нет после, ищем до
// TODO вставка // TODO вставка
if (position >= _collection.Length || position < 0) if (position >= _collection.Length || position < 0)
return false; return -1;
while (position + 1 < _collection.Length) // TODO проверка, что элемент массива по этой позиции пустой, если нет, то
if (_collection[position] != null)
{ {
if (_collection[position] == null) // проверка, что после вставляемого элемента в массиве есть пустой элемент
int nullIndex = -1;
for (int i = position + 1; i < Count; i++)
{ {
if (_collection[i] == null)
{
nullIndex = i;
break;
}
}
// Если пустого элемента нет, то выходим
if (nullIndex < 0)
{
return -1;
}
// сдвиг всех объектов, находящихся справа от позиции до первого пустого элемента
int j = nullIndex - 1;
while (j >= position)
{
_collection[j + 1] = _collection[j];
j--;
}
}
// TODO вставка по позиции
_collection[position] = obj; _collection[position] = obj;
return true; return position;
}
position++;
} }
while (position - 1 >= 0) public T? Remove(int position)
{
if (_collection[position] == null)
{
_collection[position] = obj;
return true;
}
position--;
}
return false;
}
public bool Remove(int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO удаление объекта из массива, присвоив элементу массива значение null // TODO удаление объекта из массива, присвоив элементу массива значение null
if (position >= _collection.Length || position < 0) if (position >= _collection.Length || position < 0)
{ {
return false; return null;
} }
T temp = _collection[position];
_collection[position] = null; _collection[position] = null;
return true; return temp;
} }
} }

View File

@ -78,7 +78,7 @@ public partial class FormBulldozerCollection : Form
return; return;
} }
if (_company + drawningBulldozer) if (_company + drawningBulldozer != -1)
{ {
MessageBox.Show("Объект добавлен"); MessageBox.Show("Объект добавлен");
pictureBox.Image = _company.Show(); pictureBox.Image = _company.Show();
@ -114,7 +114,7 @@ public partial class FormBulldozerCollection : Form
} }
int pos = Convert.ToInt32(maskedTextBoxPosition.Text); int pos = Convert.ToInt32(maskedTextBoxPosition.Text);
if (_company - pos) if (_company - pos != null)
{ {
MessageBox.Show("Объект удален"); MessageBox.Show("Объект удален");
pictureBox.Image = _company.Show(); pictureBox.Image = _company.Show();