Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions LabWork11/App.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
58 changes: 58 additions & 0 deletions LabWork11/LabWork11.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{DA580FFC-AF4D-4109-BAC1-5E53EC269622}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>LabWork11</RootNamespace>
<AssemblyName>LabWork11</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="ClassLibraryLab10, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\HSE\Program C#\LabWork 10 GitHub - Personal\ClassLibraryLab10\obj\Debug\ClassLibraryLab10.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="List.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
117 changes: 117 additions & 0 deletions LabWork11/List.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
using ClassLibraryLab10;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LabWork11
{
internal class List<T>
{
T[] list;
int capacity; // Выделенное количество памяти под массив (с запасом)
int count; // Реальное количество объектов в массиве

// Свойства Capacity
public int Capacity
{
get => capacity; // Возвращаем выделенное количество памяти
private set => capacity = value; // Возможность установки значения длины
}

// Считаем сколько реальных элементов в массиве
public int Count { get => count; }

// Конструктор без параметров (Создаем пустой массив)
public List()
{
Capacity = 0;
list = new T[Capacity];
}

// Конструктор - перезаписываем элементы в массив
public List(params T[] list)
{
Capacity = list.Length;
count = 0;
this.list = new T[list.Length];
for (int i = 0; i < list.Length; i++)
{
this.list[i] = list[i];
count++;
}
}

// Индексатор
public T this[int index]
{
get
{
return list[index];
}
set
{
list[index] = value;
}
}

// Метод добавления 1 элемента в массив (При необходимости увеличиваем длину массива в 2 раза)
public void Add(T item)
{
if (item == null) { throw new ArgumentException(); }
if (Count < Capacity)
{
list[count++] = item;
}
else
{
T[] temp = new T[Capacity * 2];
for (int i = 0; i < list.Length; i++)
{
temp[i] = list[i];
}
temp[count++] = item;
list = temp;
}
}

// Метод удаления элемента по индексу
public void RemoveAt(int index)
{
if (index < 0 || index >= Count) { throw new ArgumentOutOfRangeException(); }

for (int i = index; i < Count - 1; i++)
{
list[i] = list[i + 1];
}

list[Count - 1] = default(T);
count--;
}

// Метод клонирования списка
public List<T> Clone()
{
List<T> clonedList = new List<T>();
for (int i = 0; i < Count; i++)
{
clonedList.Add(this[i]);
}
return clonedList;
}

// Метод сортировки списка
public void Sort()
{
Array.Sort(list, 0, Count);
}

// Метод поиска элемента в списке
public int Find(T item)
{
return Array.IndexOf(list, item, 0, Count);
}
}
}

58 changes: 58 additions & 0 deletions LabWork11/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ClassLibraryLab10;

namespace LabWork11
{
internal class Program
{
static void Main(string[] args)
{
// Создаем объекты из библиотеки классов 10 ЛР
Card card1 = new Card();
card1.RandomInit();
DebitCard dCard1 = new DebitCard();
dCard1.RandomInit();
JunCard jCard1 = new JunCard();
jCard1.RandomInit();
CreditCard creditCard1 = new CreditCard();
creditCard1.RandomInit();


// Создаем объект класса List и записываем туда объекты
List<Card> list1 = new List<Card>(card1, dCard1, jCard1, creditCard1);


// Выводим объекты из списка - List
for (int i = 0; i < list1.Count; i++)
{
Console.WriteLine(list1[i]);
}

// Выводим информацию об кол-во объектов
Console.WriteLine($"Ёмкость = {list1.Capacity}");
Console.WriteLine($"Кол-во элементов = {list1.Count}");
Console.WriteLine();

// Создаем новые объекты из библиотеки классов 10 ЛР
CreditCard creditCard2 = new CreditCard();
creditCard2.RandomInit();
list1.Add(creditCard2);


// Выводим объекты из списка - List
for (int i = 0; i < list1.Count; i++)
{
Console.WriteLine(list1[i]);
}

// Выводим информацию об кол-во объектов
Console.WriteLine($"Ёмкость = {list1.Capacity}");
Console.WriteLine($"Кол-во элементов = {list1.Count}");
Console.WriteLine();
}
}
}
36 changes: 36 additions & 0 deletions LabWork11/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// Общие сведения об этой сборке предоставляются следующим набором
// набора атрибутов. Измените значения этих атрибутов для изменения сведений,
// связанные с этой сборкой.
[assembly: AssemblyTitle("LabWork11")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("LabWork11")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
// из модели COM задайте для атрибута ComVisible этого типа значение true.
[assembly: ComVisible(false)]

// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM
[assembly: Guid("da580ffc-af4d-4109-bac1-5e53ec269622")]

// Сведения о версии сборки состоят из указанных ниже четырех значений:
//
// Основной номер версии
// Дополнительный номер версии
// Номер сборки
// Номер редакции
//
// Можно задать все значения или принять номера сборки и редакции по умолчанию
// используя "*", как показано ниже:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
16 changes: 5 additions & 11 deletions lab.sln
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,18 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32819.101
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "lab", "lab\lab.csproj", "{1FE2C084-99A3-4F27-96A0-9143373DE451}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lab.Tests", "lab.Tests\lab.Tests.csproj", "{5ED77CF8-9B69-4059-A19A-3B36E1CACFD9}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LabWork11", "LabWork11\LabWork11.csproj", "{DA580FFC-AF4D-4109-BAC1-5E53EC269622}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1FE2C084-99A3-4F27-96A0-9143373DE451}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FE2C084-99A3-4F27-96A0-9143373DE451}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FE2C084-99A3-4F27-96A0-9143373DE451}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FE2C084-99A3-4F27-96A0-9143373DE451}.Release|Any CPU.Build.0 = Release|Any CPU
{5ED77CF8-9B69-4059-A19A-3B36E1CACFD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5ED77CF8-9B69-4059-A19A-3B36E1CACFD9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5ED77CF8-9B69-4059-A19A-3B36E1CACFD9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5ED77CF8-9B69-4059-A19A-3B36E1CACFD9}.Release|Any CPU.Build.0 = Release|Any CPU
{DA580FFC-AF4D-4109-BAC1-5E53EC269622}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DA580FFC-AF4D-4109-BAC1-5E53EC269622}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DA580FFC-AF4D-4109-BAC1-5E53EC269622}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DA580FFC-AF4D-4109-BAC1-5E53EC269622}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down