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

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="bulldozer">Добавляемый объект</param>
/// <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>
@ -68,9 +68,9 @@ public abstract class AbstractCompany
/// <param name="company">Компания</param>
/// <param name="position">Номер удаляемого объекта</param>
/// <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>

View File

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

View File

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

View File

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