ISEbd-12_Osyagina_A.A._Simple_LabWork06 #6

Closed
Osyagina_Anna wants to merge 9 commits from LabWork06 into LabWork05
16 changed files with 512 additions and 83 deletions
Showing only changes of commit 058d31a0f7 - Show all commits

11
LAB02/02/02.csproj Normal file
View File

@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>_02</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

58
LAB02/02/Program.cs Normal file
View File

@ -0,0 +1,58 @@
using System;
using System.Diagnostics;
class EditDistance//Определяет класс EditDistance для вычисления редакционного расстояния между двумя строками.
{
static int Min(int a, int b, int c)//Вспомогательный метод, возвращающий минимальное из трех заданных целых чисел.
{
return Math.Min(Math.Min(a, b), c);
}
static int EditDistanceDP(string str1, string str2)//Статический метод, который вычисляет редакционное расстояние между двумя строками str1 и str2 с использованием динамического программирования.Содержит двумерный массив dp для хранения вычисленных значений.
{
int m = str1.Length;
int n = str2.Length;
int[,] dp = new int[m + 1, n + 1];//Инициализирует массив dp базовыми случаями: dp[i, 0] = i: Если строка str1 пуста, расстояние равно длине str2.dp[0, j] = j: Если строка str2 пуста, расстояние равно длине str1.
// Заполняем базовые случаи
for (int i = 0; i <= m; i++)
{
for (int j = 0; j <= n; j++)
{
if (i == 0)
dp[i, j] = j; // Если первая строка пустая, расстояние - длина второй строки
else if (j == 0)
dp[i, j] = i; // Если вторая строка пустая, расстояние - длина первой строки
else if (str1[i - 1] == str2[j - 1])
dp[i, j] = dp[i - 1, j - 1]; // Если символы совпадают, берем значение из диагонали
else
dp[i, j] = 1 + Min(dp[i - 1, j], // Удаление
dp[i, j - 1], // Вставка
dp[i - 1, j - 1]); // Замена
}
}
return dp[m, n];
}
static void Main(string[] args)
{
string str1 = "кот";
string str2 = "скат";
// Измерение времени выполнения
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
int distance = EditDistanceDP(str1, str2);
stopwatch.Stop();
Console.WriteLine("Редакционное расстояние между '{0}' и '{1}' равно {2}", str1, str2, distance);
Console.WriteLine("Время выполнения: " + stopwatch.ElapsedMilliseconds + " миллисекунд");
// Измерение использования памяти
Process currentProcess = Process.GetCurrentProcess();
long memoryUsed = currentProcess.PrivateMemorySize64 / (1024 * 1024); // Переводим байты в мегабайты
Console.WriteLine("Редакционное расстояние между '{0}' и '{1}' равно {2}", str1, str2, EditDistanceDP(str1, str2));
}
}

11
LAB02/03/03.csproj Normal file
View File

@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>_03</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

1
LAB02/03/Program.cs Normal file
View File

@ -0,0 +1 @@


39
LAB02/1/1.csproj Normal file
View File

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Alg;
class Program // O(n^2)
{
static void Main(string[] args)
{
int n1 = Convert.ToInt32(Console.ReadLine());
FindPrimes(n1);
}
static void FindPrimes(int n)
{
bool[] isPrime = new bool[n + 1];
for (int i = 2; i <= n; i++)
{
isPrime[i] = true;
}
for (int i = 2; i <= n; i++)
{
if (isPrime[i] == true)
{
Console.Write(i + " ");
for (int j = i * i; j <= n; j += i)
{
isPrime[j] = false;
}
}
}
}
}

2
LAB02/1/Program.cs Normal file
View File

@ -0,0 +1,2 @@
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

11
LAB02/2/2.csproj Normal file
View File

@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>_2</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

81
LAB02/2/Program.cs Normal file
View File

@ -0,0 +1,81 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Alg;
class Program // БЫСТРАЯ СОРТИРОВКА (В лучшем случае O(n*log(n)), в худшем O(n^2))
{
static void Main(string[] args)
{
int[] myArray = randomGenerate(10, 1, 100); // Создаем массив из 10000 элементов со значениями от 1 до 1000000
Console.WriteLine("Исходный массив:");
printArray(myArray); // Выводим массив на экран
quickSort(myArray, 0, myArray.Length - 1); // Сортируем массив быстрой сортировкой
Console.WriteLine("Отсортированный массив:");
printArray(myArray); // Выводим отсортированный массив на экран
}
static int[] randomGenerate(int size, int minValue, int maxValue)
{
Random rnd = new Random();
int[] array = new int[size];
for (int i = 0; i < size; i++)
{
array[i] = rnd.Next(minValue, maxValue + 1); // Генерируем случайное число от minValue до maxValue
}
return array;
}
static void printArray(int[] array)
{
foreach (int num in array)
{
Console.Write(num + " ");
}
Console.WriteLine();
}
static void quickSort(int[] array, int low, int high)
{
if (low < high)
{
int pivotIndex = partition(array, low, high);
// Рекурсивно сортируем элементы до и после опорного элемента
quickSort(array, low, pivotIndex - 1);
quickSort(array, pivotIndex + 1, high);
}
}
static int partition(int[] array, int low, int high)
{
int pivot = array[high];
int i = low - 1; // Индекс меньшего элемента
for (int j = low; j < high; j++)
{
// Если текущий элемент меньше или равен опорному
if (array[j] <= pivot)
{
i++;
// Обмен значениями
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
// Обмен значениями
int temp1 = array[i + 1];
array[i + 1] = array[high];
array[high] = temp1;
return i + 1;
}
}

11
LAB02/3.1/3.1.csproj Normal file
View File

@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>_3._1</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

39
LAB02/3.1/Program.cs Normal file
View File

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Alg;
class Program // O(n^2)//Это объявление класса с именем "Program". Комментарий "// O(n^2)" указывает на то, что алгоритм внутри метода "FindPrimes" имеет временную сложность O(n^2), что означает квадратичную зависимость от размера входных данных.
{
static void Main(string[] args)//Это объявление метода Main, который является точкой входа в программу. Он принимает массив строк args в качестве аргументов.
{
int n1 = Convert.ToInt32(Console.ReadLine());//Прочитывает ввод пользователя с консоли и конвертирует его в целое число, которое сохраняется в переменной n1.
FindPrimes(n1);//Вызов метода FindPrimes с аргументом n1.
}
static void FindPrimes(int n)//Объявление метода FindPrimes, который принимает целочисленный аргумент n.
{
bool[] isPrime = new bool[n + 1];//Создание массива isPrime длиной n+1, который будет использоваться для отслеживания простых чисел.
for (int i = 2; i <= n; i++)//Начало цикла от 2 до n.
{
isPrime[i] = true;//Установка флага isPrimei в true, так как i является простым числом.
}
for (int i = 2; i <= n; i++)//Начало второго цикла от 2 до n.
{
if (isPrime[i] == true)//Проверка, является ли число i простым.
{
Console.Write(i + " ");//Вывод числа i на консоль.
for (int j = i * i; j <= n; j += i)//Цикл, который помечает значения, кратные i, как непростые.
{
isPrime[j] = false;//Установка флага isPrimej в false, так как j не является простым числом.
}
}
}
}
}

11
LAB02/3/3.csproj Normal file
View File

@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>_3</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

42
LAB02/3/Program.cs Normal file
View File

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Alg;
class Program // O(log(n))
{
static void Main()
{
int[] arr = { 2, 3, 4, 10, 40 };//Инициализация массива arr с элементами 2, 3, 4, 10, 40.
int x = 10;//Определение переменной x, которая равна искомому элементу.
int result = BinarySearch(arr, x);//Вызов метода BinarySearch для поиска элемента x в массиве arr.
if (result == -1)//Проверка результата поиска и вывод соответствующего сообщения.
Console.WriteLine("Элемент не найден");
else
Console.WriteLine("Элемент найден в индексе: " + result);
}
static int BinarySearch(int[] arr, int x)//Объявление метода BinarySearch, который принимает массив arr и искомый элемент x.
{
int left = 0;//Инициализация переменной left, которая указывает на начальный индекс массива.
int right = arr.Length - 1;//Инициализация переменной right, которая указывает на конечный индекс массива.
while (left <= right)// Начало цикла, который выполняется, пока левая граница не превысит правую.
{
int mid = left + (right - left) / 2;//Вычисление среднего индекса mid для деления массива на две части.
if (arr[mid] == x)//Проверка, является ли элемент в середине массива равным искомому элементу x.
return mid;
if (arr[mid] < x)//Если элемент в середине меньше x, сдвигаем левую границу поиска.
left = mid + 1;
else
right = mid - 1;//Иначе сдвигаем правую границу поиска.
}
return -1; // элемент не найден
}
}

56
LAB02/LAB02.sln Normal file
View File

@ -0,0 +1,56 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34525.116
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LAB02", "LAB02\LAB02.csproj", "{295B61E5-A2D5-453C-87D5-7CAC7ACABE3F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "02", "02\02.csproj", "{CD634B3A-8F12-4936-9082-3EFD2EB0C4E7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "03", "03", "{C21E56E7-6AC7-4310-963B-BDDC0AC3CBF6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "2", "2\2.csproj", "{E69E6275-619D-4D71-B923-9963C88A9F2B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3", "3\3.csproj", "{3802D8BD-C1BC-4DCB-B205-2BC83722E194}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3.1", "3.1\3.1.csproj", "{42D05460-8C32-4F20-8606-07EA30B22E8C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{295B61E5-A2D5-453C-87D5-7CAC7ACABE3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{295B61E5-A2D5-453C-87D5-7CAC7ACABE3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{295B61E5-A2D5-453C-87D5-7CAC7ACABE3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{295B61E5-A2D5-453C-87D5-7CAC7ACABE3F}.Release|Any CPU.Build.0 = Release|Any CPU
{CD634B3A-8F12-4936-9082-3EFD2EB0C4E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CD634B3A-8F12-4936-9082-3EFD2EB0C4E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CD634B3A-8F12-4936-9082-3EFD2EB0C4E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CD634B3A-8F12-4936-9082-3EFD2EB0C4E7}.Release|Any CPU.Build.0 = Release|Any CPU
{E69E6275-619D-4D71-B923-9963C88A9F2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E69E6275-619D-4D71-B923-9963C88A9F2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E69E6275-619D-4D71-B923-9963C88A9F2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E69E6275-619D-4D71-B923-9963C88A9F2B}.Release|Any CPU.Build.0 = Release|Any CPU
{3802D8BD-C1BC-4DCB-B205-2BC83722E194}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3802D8BD-C1BC-4DCB-B205-2BC83722E194}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3802D8BD-C1BC-4DCB-B205-2BC83722E194}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3802D8BD-C1BC-4DCB-B205-2BC83722E194}.Release|Any CPU.Build.0 = Release|Any CPU
{42D05460-8C32-4F20-8606-07EA30B22E8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{42D05460-8C32-4F20-8606-07EA30B22E8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{42D05460-8C32-4F20-8606-07EA30B22E8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{42D05460-8C32-4F20-8606-07EA30B22E8C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{E69E6275-619D-4D71-B923-9963C88A9F2B} = {C21E56E7-6AC7-4310-963B-BDDC0AC3CBF6}
{3802D8BD-C1BC-4DCB-B205-2BC83722E194} = {C21E56E7-6AC7-4310-963B-BDDC0AC3CBF6}
{42D05460-8C32-4F20-8606-07EA30B22E8C} = {C21E56E7-6AC7-4310-963B-BDDC0AC3CBF6}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4B6E121E-4A2B-40E0-B768-CFD795B324BA}
EndGlobalSection
EndGlobal

10
LAB02/LAB02/LAB02.csproj Normal file
View File

@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

56
LAB02/LAB02/Program.cs Normal file
View File

@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
class CoinChange
{
static void MakeChange(int[] coins, int amount)// объявляет статический метод (без экземпляра класса) с именем MakeChange, который принимает два аргумента: coins - массив значений монет и amount - сумму, для которой нужно подобрать сдачу.
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
Array.Sort(coins);//сортирует массив монет в порядке возрастания.
Array.Reverse(coins);//переворачивает отсортированный массив, чтобы монеты были в порядке убывания.
List<int> change = new List<int>();//создает новый пустой список для хранения монет, использованных для сдачи.
int totalCoins = 0; //инициализирует переменную totalCoins, которая будет хранить общее количество монет в сдаче, значением 0.
foreach (int coin in coins) // перебирает каждую монету в отсортированном массиве монет.
{
while (amount >= coin) //проверяет, является ли сумма больше или равна текущей монете.
{
change.Add(coin); //добавляет текущую монету в список сдачи.
amount -= coin;//вычитает значение текущей монеты из суммы.
totalCoins++;//величивает счетчик общего количества монет на 1.
}
}
Console.WriteLine("Монеты для сдачи:");//выводит строку "Монеты для сдачи:" в консоль.
foreach (int coin in change)//перебирает список сдачи
{
Console.Write(coin + " ");//выводит каждое значение монеты в консоль, разделяя их пробелами
}
Console.WriteLine("\nВсего монет: " + totalCoins);//выводит строку "Всего монет:" в консоль, а затем общее количество монет в сдаче
stopwatch.Stop();
Console.WriteLine($"\nВремя выполнения: {stopwatch.ElapsedMilliseconds} мс");
// Получаем данные о потреблении памяти
Process proc = Process.GetCurrentProcess();
long memoryUsed = proc.PrivateMemorySize64;
Console.WriteLine($"Использование памяти: {memoryUsed / 1024} KB");
}
static void Main(string[] args)//объявляет статический метод Main, который является входной точкой программы
{
int[] coins = { 25, 10, 5, 1 };//создает массив монет с номиналами 25, 10, 5 и 1.
int amount = 63;//устанавливает сумму для сдачи в 63 единицы.
MakeChange(coins, amount);//вызывает метод MakeChange, передавая ему массив монет и сумму.
}
}

View File

@ -20,7 +20,7 @@ public class StorageCollection<T>
_storages = new Dictionary<string, ICollectionGenericObjects<T>>();
}
public void AddCollection(string name, CollectionType collectionType)
{
// TODO проверка, что name не пустой и нет в словаре записи с таким ключом
@ -40,7 +40,7 @@ public class StorageCollection<T>
}
}
public void DelCollection(string name)
{
// TODO Прописать логику для удаления коллекции
@ -48,7 +48,7 @@ public class StorageCollection<T>
_storages.Remove(name);
}
public ICollectionGenericObjects<T>? this[string name]
{
get
@ -65,122 +65,112 @@ public class StorageCollection<T>
private readonly string _separatorItems = ";";
public bool SaveData(string filname)
/// <summary>
/// Сохранение информации в хранилище в файл
/// </summary>
/// <param name="filename">Путь и имя файла</param>
/// <returns>true - сохранение прошло успешно, false - ошибка при сохранении данных</returns>
public bool SaveData(string filename)
{
if (_storages.Count == 0)
{
return false;
}
if (File.Exists(filname))
if (File.Exists(filename))
{
File.Delete(filname);
File.Delete(filename);
Review

Записывать в файл можно сразу, без использования StringBuilder

Записывать в файл можно сразу, без использования StringBuilder
}
if (File.Exists(filname))
using (StreamWriter writer = new StreamWriter(filename))
{
File.Delete(filname);
}
StringBuilder sb = new();
sb.Append(_collectionKey);
foreach (KeyValuePair<string, ICollectionGenericObjects<T>> value in _storages)
{
sb.Append(Environment.NewLine);
// не сохраняем пустые коллекции
if (value.Value.Count == 0)
writer.Write(_collectionKey);
foreach (KeyValuePair<string, ICollectionGenericObjects<T>> value in _storages)
{
continue;
}
sb.Append(value.Key);
sb.Append(_separatorForKeyValue);
sb.Append(value.Value.GetCollectionType);
sb.Append(_separatorForKeyValue);
sb.Append(value.Value.MaxCount);
sb.Append(_separatorForKeyValue);
foreach (T? item in value.Value.GetItems())
{
string data = item?.GetDataForSave() ?? string.Empty;
if (string.IsNullOrEmpty(data))
StringBuilder sb = new();
sb.Append(Environment.NewLine);
if (value.Value.Count == 0)
{
continue;
}
sb.Append(data);
sb.Append(_separatorItems);
sb.Append(value.Key);
sb.Append(_separatorForKeyValue);
sb.Append(value.Value.GetCollectionType);
sb.Append(_separatorForKeyValue);
sb.Append(value.Value.MaxCount);
sb.Append(_separatorForKeyValue);
foreach (T? item in value.Value.GetItems())
{
string data = item?.GetDataForSave() ?? string.Empty;
if (string.IsNullOrEmpty(data))
{
continue;
}
sb.Append(data);
sb.Append(_separatorItems);
}
writer.Write(sb);
}
}
using FileStream fs = new(filname, FileMode.Create);
byte[] info = new UTF8Encoding(true).GetBytes(sb.ToString());
fs.Write(info, 0, info.Length);
return true;
}
/// <summary>
/// Загрузка информации в хранилище из файла
/// </summary>
/// <param name="filename">Путь и имя файла</param>
/// <returns>true - загрузка прошла успешно, false - ошибка при загрузке данных</returns>
public bool LoadData(string filename)
{
if (!File.Exists(filename))
{
return false;
}
string bufferTextFromFile = "";
using (FileStream fs = new(filename, FileMode.Open))
using (StreamReader fs = File.OpenText(filename))
{
byte[] b = new byte[fs.Length];
UTF8Encoding temp = new(true);
while (fs.Read(b, 0, b.Length) > 0)
{
bufferTextFromFile += temp.GetString(b);
}
}
string[] strs = bufferTextFromFile.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
if (strs == null || strs.Length == 0)
{
return false;
}
if (!strs[0].Equals(_collectionKey))
{
//если нет такой записи, то это не те файлы
return false;
}
_storages.Clear();
foreach (string data in strs)
{
string[] record = data.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries);
if (record.Length != 4)
{
continue;
}
CollectionType collectionType = (CollectionType)Enum.Parse(typeof(CollectionType), record[1]);
ICollectionGenericObjects<T> collection = StorageCollection<T>.CreateCollection(collectionType);
if (collection == null)
string str = fs.ReadLine();
if (str == null || str.Length == 0)
{
return false;
}
collection.MaxCount = Convert.ToInt32(record[2]);
string[] set = record[3].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries);
foreach (string elem in set)
if (!str.StartsWith(_collectionKey))
{
if (elem?.CreateDrawningBoat() is T warship)
return false;
}
_storages.Clear();
string strs = "";
while ((strs = fs.ReadLine()) != null)
{
string[] record = strs.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries);
if (record.Length != 4)
{
if (collection.Insert(warship) == -1)
continue;
}
CollectionType collectionType = (CollectionType)Enum.Parse(typeof(CollectionType), record[1]);
ICollectionGenericObjects<T>? collection = StorageCollection<T>.CreateCollection(collectionType);
if (collection == null)
{
return false;
}
collection.MaxCount = Convert.ToInt32(record[2]);
string[] set = record[3].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries);
foreach (string elem in set)
{
if (elem?.CreateDrawningBoat() is T militaryAircraft)
{
return false;
if (collection.Insert(militaryAircraft) == -1)
{
return false;
}
}
}
_storages.Add(record[0], collection);
}
_storages.Add(record[0], collection);
return true;
}
return true;
}
private static ICollectionGenericObjects<T>? CreateCollection(CollectionType collectionType)
{
@ -191,4 +181,4 @@ public class StorageCollection<T>
_ => null,
};
}
}
}