diff --git a/Lab1_OAP/Lab1_OAP.sln b/Lab1_OAP/Lab1_OAP.sln deleted file mode 100644 index 92627e6..0000000 --- a/Lab1_OAP/Lab1_OAP.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.8.34525.116 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Lab1_OAP", "Lab1_OAP\Lab1_OAP.vcxproj", "{39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Debug|x64.ActiveCfg = Debug|x64 - {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Debug|x64.Build.0 = Debug|x64 - {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Debug|x86.ActiveCfg = Debug|Win32 - {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Debug|x86.Build.0 = Debug|Win32 - {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Release|x64.ActiveCfg = Release|x64 - {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Release|x64.Build.0 = Release|x64 - {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Release|x86.ActiveCfg = Release|Win32 - {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {AD8890FA-E7D7-4EB8-996C-597872ABE83B} - EndGlobalSection -EndGlobal diff --git a/Lab1_OAP/Lab1_OAP/Lab1_OAP.cpp b/Lab1_OAP/Lab1_OAP/Lab1_OAP.cpp deleted file mode 100644 index 5f28270..0000000 --- a/Lab1_OAP/Lab1_OAP/Lab1_OAP.cpp +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj b/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj deleted file mode 100644 index 7b4bd6f..0000000 --- a/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {39e703ff-4168-4aca-84ca-cdd94bfe3fd3} - Lab1OAP - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - - - - - \ No newline at end of file diff --git a/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj.filters b/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj.filters deleted file mode 100644 index 0805cb7..0000000 --- a/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Исходные файлы - - - \ No newline at end of file diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/AbstractCompany.cs b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/AbstractCompany.cs index 6eb2517..dbb2052 100644 --- a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/AbstractCompany.cs +++ b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/AbstractCompany.cs @@ -38,7 +38,7 @@ public abstract class AbstractCompany /// /// Вычисление максимального количества элементов, который можно разместить в окне /// - private int GetMaxCount => _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight); + private int GetMaxCount => _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight)-6; /// /// Конструктор diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/ListGenericObjects.cs b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/ListGenericObjects.cs index 86a38e5..8de8d91 100644 --- a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/ListGenericObjects.cs +++ b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/ListGenericObjects.cs @@ -1,4 +1,5 @@ -using System; +using ProjectGasolineTanker.Exceptions; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -21,16 +22,6 @@ public class ListGenericObjects : ICollectionGenericObjects public int Count => _collection.Count; - /// - /// Конструктор - /// - public ListGenericObjects() - { - _collection = new(); - } - - public CollectionType GetCollectionType => CollectionType.List; - public int MaxCount { get @@ -47,10 +38,20 @@ public class ListGenericObjects : ICollectionGenericObjects } } + public CollectionType GetCollectionType => CollectionType.List; + + /// + /// Конструктор + /// + public ListGenericObjects() + { + _collection = new(); + } + public T? Get(int position) { if (position >= Count || position < 0) - return null; + throw new PositionOutOfCollectionException(position); return _collection[position]; } @@ -58,7 +59,8 @@ public class ListGenericObjects : ICollectionGenericObjects public int Insert(T obj) { if (Count + 1 > _maxCount) - return -1; + throw new CollectionOverflowException(Count); + _collection.Add(obj); return Count; } @@ -66,9 +68,11 @@ public class ListGenericObjects : ICollectionGenericObjects public int Insert(T obj, int position) { if (Count + 1 > _maxCount) - return -1; + throw new CollectionOverflowException(Count); + if (position < 0 || position > Count) - return -1; + throw new PositionOutOfCollectionException(position); + _collection.Insert(position, obj); return 1; } @@ -76,7 +80,7 @@ public class ListGenericObjects : ICollectionGenericObjects public T? Remove(int position) { if (position < 0 || position > Count) - return null; + throw new PositionOutOfCollectionException(position); T? temp = _collection[position]; _collection.RemoveAt(position); diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/MassiveGenericObjects.cs b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/MassiveGenericObjects.cs index c019d95..aebffc2 100644 --- a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/MassiveGenericObjects.cs +++ b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/MassiveGenericObjects.cs @@ -1,4 +1,5 @@ -using System; +using ProjectGasolineTanker.Exceptions; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -52,12 +53,16 @@ public class MassiveGenericObjects : ICollectionGenericObjects public T? Get(int position) { if (position < 0 || position >= Count) - return null; + throw new PositionOutOfCollectionException(position); + + if (position >= _collection.Length && _collection[position] == null) + throw new ObjectNotFoundException(position); + return _collection[position]; } public int Insert(T obj) - { + { for (int i = 0; i < Count; i++) { if (_collection[i] == null) @@ -66,13 +71,13 @@ public class MassiveGenericObjects : ICollectionGenericObjects return i; } } - return -1; + throw new CollectionOverflowException(Count); } public int Insert(T obj, int position) { if (position < 0 || position >= Count) - return -1; + throw new PositionOutOfCollectionException(position); if (_collection[position] == null) { @@ -101,19 +106,16 @@ public class MassiveGenericObjects : ICollectionGenericObjects } temp--; } - - return -1; + throw new CollectionOverflowException(Count); } public T? Remove(int position) { if (position < 0 || position >= Count) - return null; + throw new PositionOutOfCollectionException(position); if (_collection[position] == null) - { - return null; - } + throw new ObjectNotFoundException(position); T? temp = _collection[position]; _collection[position] = null; @@ -128,3 +130,4 @@ public class MassiveGenericObjects : ICollectionGenericObjects } } } + diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/StorageCollection.cs b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/StorageCollection.cs index b3abe18..1c90976 100644 --- a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/StorageCollection.cs +++ b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/StorageCollection.cs @@ -1,4 +1,5 @@ using ProjectGasolineTanker.Drawings; +using ProjectGasolineTanker.Exceptions; using System; using System.Collections.Generic; using System.Linq; @@ -92,10 +93,10 @@ public class StorageCollection } } - public bool SaveData(string filename) + public void SaveData(string filename) { if (_storages.Count == 0) - return false; + throw new InvalidDataException("В хранилище отсутсвуют коллекции для сохранения"); if (File.Exists(filename)) File.Delete(filename); @@ -130,14 +131,13 @@ public class StorageCollection sw.Write(_separatorItems); } } - return true; } - public bool LoadData(string filename) + public void LoadData(string filename) { if (!File.Exists(filename)) { - return false; + throw new FileNotFoundException("Файл не существует"); } using (FileStream fs = new(filename, FileMode.Open)) @@ -147,12 +147,12 @@ public class StorageCollection string str = sr.ReadLine(); if (str == null || str.Length == 0) { - return false; + throw new InvalidDataException("В файле нет данных"); } if (!str.Equals(_collectionKey)) { - return false; + throw new InvalidOperationException("В файле неверные данные"); } _storages.Clear(); @@ -168,7 +168,7 @@ public class StorageCollection ICollectionGenericObjects? collection = StorageCollection.CreateCollection(collectionType); if (collection == null) { - return false; + throw new InvalidOperationException("Не удалось создать коллекцию"); } collection.MaxCount = Convert.ToInt32(record[2]); @@ -176,16 +176,24 @@ public class StorageCollection string[] set = record[3].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries); foreach (string elem in set) { - if (elem?.CreateDrawingTanker() is T airplane) + if (elem?.CreateDrawingTanker() is T tanker) { - if (collection.Insert(airplane) == -1) - return false; + try + { + if (collection.Insert(tanker) == -1) + { + throw new InvalidOperationException("Объект не удалось добавить в коллекцию: " + record[3]); + } + } + catch (CollectionOverflowException ex) + { + throw new ArgumentOutOfRangeException("Коллекция переполнена", ex); + } } } _storages.Add(record[0], collection); } } - return true; } private static ICollectionGenericObjects? CreateCollection(CollectionType collectionType) diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/CollectionOverflowException.cs b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/CollectionOverflowException.cs new file mode 100644 index 0000000..047cd31 --- /dev/null +++ b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/CollectionOverflowException.cs @@ -0,0 +1,17 @@ +using System.Runtime.Serialization; + +namespace ProjectGasolineTanker.Exceptions; + +[Serializable] +internal class CollectionOverflowException : ApplicationException +{ + public CollectionOverflowException(int count) : base("В коллекции превышено допустимое количество: " + count) { } + + public CollectionOverflowException() : base() { } + + public CollectionOverflowException(string message) : base(message) { } + + public CollectionOverflowException(string message, Exception exception) : base(message, exception) { } + + protected CollectionOverflowException(SerializationInfo info, StreamingContext contex) : base(info, contex) { } +} diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/ObjectNotFoundException.cs b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/ObjectNotFoundException.cs new file mode 100644 index 0000000..9cc8bbf --- /dev/null +++ b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/ObjectNotFoundException.cs @@ -0,0 +1,17 @@ +using System.Runtime.Serialization; + +namespace ProjectGasolineTanker.Exceptions; + +[Serializable] +internal class ObjectNotFoundException : ApplicationException +{ + public ObjectNotFoundException(int i) : base("Не найден объект по позиции " + i) { } + + public ObjectNotFoundException() : base() { } + + public ObjectNotFoundException(string message) : base(message) { } + + public ObjectNotFoundException(string message, Exception exception) : base(message, exception) { } + + protected ObjectNotFoundException(SerializationInfo info, StreamingContext contex) : base(info, contex) { } +} \ No newline at end of file diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/PositionOutOfCollectionException.cs b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/PositionOutOfCollectionException.cs new file mode 100644 index 0000000..ca0ef90 --- /dev/null +++ b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/PositionOutOfCollectionException.cs @@ -0,0 +1,17 @@ +using System.Runtime.Serialization; + +namespace ProjectGasolineTanker.Exceptions; + +[Serializable] +internal class PositionOutOfCollectionException : ApplicationException +{ + public PositionOutOfCollectionException(int i) : base("Выход за границы коллекции. Позиция " + i) { } + + public PositionOutOfCollectionException() : base() { } + + public PositionOutOfCollectionException(string message) : base(message) { } + + public PositionOutOfCollectionException(string message, Exception exception) : base(message, exception) { } + + protected PositionOutOfCollectionException(SerializationInfo info, StreamingContext contex) : base(info, contex) { } +} diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/FormTankerCollection.cs b/ProjectGasolineTanker/ProjectGasolineTanker/FormTankerCollection.cs index 8f697ef..4652365 100644 --- a/ProjectGasolineTanker/ProjectGasolineTanker/FormTankerCollection.cs +++ b/ProjectGasolineTanker/ProjectGasolineTanker/FormTankerCollection.cs @@ -9,6 +9,8 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ProjectGasolineTanker.Drawings; +using Microsoft.Extensions.Logging; +using ProjectGasolineTanker.Exceptions; namespace ProjectGasolineTanker; @@ -20,13 +22,17 @@ public partial class FormTankerCollection : Form /// private AbstractCompany? _company = null; + private readonly ILogger _logger; + /// /// Конструктор /// - public FormTankerCollection() + public FormTankerCollection(ILogger logger) { InitializeComponent(); _storageCollection = new(); + _logger = logger; + _logger.LogInformation("Форма загрузилась"); } /// @@ -49,18 +55,26 @@ public partial class FormTankerCollection : Form private void SetTanker(DrawingTanker tanker) { if (_company == null || tanker == null) - { return; - } - if (_company + tanker != -1) + try { - MessageBox.Show("Объект добавлен"); - pictureBox.Image = _company.Show(); + if (_company + tanker != -1) + { + MessageBox.Show("Объект добавлен"); + pictureBox.Image = _company.Show(); + _logger.LogInformation("Добавлен объект: " + tanker.GetDataForSave()); + } } - else + catch (CollectionOverflowException ex) { - MessageBox.Show("Не удалось добавить объект"); + MessageBox.Show(ex.Message); + _logger.LogError("Ошибка: {Message}", ex.Message); + } + catch (ObjectNotFoundException ex) + { + MessageBox.Show(ex.Message); + _logger.LogError("Ошибка: {Message}", ex.Message); } } @@ -82,14 +96,25 @@ public partial class FormTankerCollection : Form } int pos = Convert.ToInt32(maskedTextBox1.Text); - if (_company - pos != null) + + try { - MessageBox.Show("Объект удален"); - pictureBox.Image = _company.Show(); + if (_company - pos != null) + { + MessageBox.Show("Объект удален"); + pictureBox.Image = _company.Show(); + _logger.LogInformation("Удален объект по позиции " + pos); + } } - else + catch (PositionOutOfCollectionException ex) { - MessageBox.Show("Не удалось удалить объект"); + MessageBox.Show(ex.Message); + _logger.LogError("Ошибка: {Message}", ex.Message); + } + catch (ObjectNotFoundException ex) + { + MessageBox.Show(ex.Message); + _logger.LogError("Ошибка: {Message}", ex.Message); } } @@ -109,11 +134,22 @@ public partial class FormTankerCollection : Form int counter = 100; while (tanker == null) { - tanker = _company.GetRandomObject(); - counter--; - if (counter <= 0) + try { - break; + tanker = _company.GetRandomObject(); + counter--; + if (counter <= 0) + { + break; + } + } + catch (PositionOutOfCollectionException ex) + { + MessageBox.Show(ex.Message); + } + catch (ObjectNotFoundException ex) + { + MessageBox.Show(ex.Message); } } @@ -152,14 +188,34 @@ public partial class FormTankerCollection : Form return; } - CollectionType collectionType = CollectionType.None; - if (radioButtonMassive.Checked) - collectionType = CollectionType.Massive; - else if (radioButtonList.Checked) - collectionType = CollectionType.List; + //CollectionType collectionType = CollectionType.None; + //if (radioButtonMassive.Checked) + // collectionType = CollectionType.Massive; + //else if (radioButtonList.Checked) + // collectionType = CollectionType.List; - _storageCollection.AddCollection(textBoxCollectionName.Text, collectionType); - RefreshListBoxItems(); + //_storageCollection.AddCollection(textBoxCollectionName.Text, collectionType); + //RefreshListBoxItems(); + + try + { + CollectionType collectionType = CollectionType.None; + if (radioButtonMassive.Checked) + { + collectionType = CollectionType.Massive; + } + else if (radioButtonList.Checked) + { + collectionType = CollectionType.List; + } + _storageCollection.AddCollection(textBoxCollectionName.Text, collectionType); + RefreshListBoxItems(); + _logger.LogInformation("Коллекция добавлена " + textBoxCollectionName.Text); + } + catch (Exception ex) + { + _logger.LogError("Ошибка: {Message}", ex.Message); + } } private void RefreshListBoxItems() @@ -169,9 +225,7 @@ public partial class FormTankerCollection : Form { string? colName = _storageCollection.Keys?[i]; if (!string.IsNullOrEmpty(colName)) - { listBoxCollection.Items.Add(colName); - } } } @@ -221,13 +275,16 @@ public partial class FormTankerCollection : Form { if (saveFileDialog.ShowDialog() == DialogResult.OK) { - if (_storageCollection.SaveData(saveFileDialog.FileName)) + try { + _storageCollection.SaveData(saveFileDialog.FileName); MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + _logger.LogInformation("Сохранение в файл: {filename}", saveFileDialog.FileName); } - else + catch (Exception ex) { - MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + _logger.LogError("Ошибка: {Message}", ex.Message); } } } @@ -236,14 +293,17 @@ public partial class FormTankerCollection : Form { if (openFileDialog.ShowDialog() == DialogResult.OK) { - if (_storageCollection.LoadData(openFileDialog.FileName)) + try { + _storageCollection.LoadData(openFileDialog.FileName); MessageBox.Show("Загрузка прошла успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); RefreshListBoxItems(); + _logger.LogInformation("Загрузка из файла: {filename}", openFileDialog.FileName); } - else + catch (Exception ex) { - MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + _logger.LogError("Ошибка: {Message}", ex.Message); } } } diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/Program.cs b/ProjectGasolineTanker/ProjectGasolineTanker/Program.cs index 913060e..d3731fc 100644 --- a/ProjectGasolineTanker/ProjectGasolineTanker/Program.cs +++ b/ProjectGasolineTanker/ProjectGasolineTanker/Program.cs @@ -1,3 +1,8 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Serilog; + namespace ProjectGasolineTanker { internal static class Program @@ -11,7 +16,27 @@ namespace ProjectGasolineTanker // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new FormTankerCollection()); + ServiceCollection services = new(); + ConfigureServices(services); + using ServiceProvider serviceProvider = services.BuildServiceProvider(); + Application.Run(serviceProvider.GetRequiredService()); + } + + private static void ConfigureServices(ServiceCollection services) + { + string[] path = Directory.GetCurrentDirectory().Split('\\'); + string pathNeed = ""; + for (int i = 0; i < path.Length - 3; i++) + { + pathNeed += path[i] + "\\"; + } + services.AddSingleton() + .AddLogging(option => + { + option.SetMinimumLevel(LogLevel.Information); + option.AddSerilog(new LoggerConfiguration() + .ReadFrom.Configuration(new ConfigurationBuilder().AddJsonFile($"{pathNeed}serilog.json").Build()).CreateLogger()); + }); } } } \ No newline at end of file diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/ProjectGasolineTanker.csproj b/ProjectGasolineTanker/ProjectGasolineTanker/ProjectGasolineTanker.csproj index af03d74..08ed916 100644 --- a/ProjectGasolineTanker/ProjectGasolineTanker/ProjectGasolineTanker.csproj +++ b/ProjectGasolineTanker/ProjectGasolineTanker/ProjectGasolineTanker.csproj @@ -8,6 +8,20 @@ enable + + + + + + + + + + + + + + True @@ -23,4 +37,10 @@ + + + Always + + + \ No newline at end of file diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/serilog.json b/ProjectGasolineTanker/ProjectGasolineTanker/serilog.json new file mode 100644 index 0000000..fa91ef7 --- /dev/null +++ b/ProjectGasolineTanker/ProjectGasolineTanker/serilog.json @@ -0,0 +1,15 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.File" ], + "MinimumLevel": "Debug", + "WriteTo": [ + { + "Name": "File", + "Args": { "path": "log.log" } + } + ], + "Properties": { + "Application": "Sample" + } + } +} \ No newline at end of file diff --git a/laboap1/laboap1.sln b/laboap1/laboap1.sln deleted file mode 100644 index 9f5ffa8..0000000 --- a/laboap1/laboap1.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.8.34525.116 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "laboap1", "laboap1\laboap1.vcxproj", "{1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Debug|x64.ActiveCfg = Debug|x64 - {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Debug|x64.Build.0 = Debug|x64 - {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Debug|x86.ActiveCfg = Debug|Win32 - {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Debug|x86.Build.0 = Debug|Win32 - {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Release|x64.ActiveCfg = Release|x64 - {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Release|x64.Build.0 = Release|x64 - {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Release|x86.ActiveCfg = Release|Win32 - {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {898933DD-7FA8-4FA7-872F-63991ACB024A} - EndGlobalSection -EndGlobal diff --git a/laboap1/laboap1/laboap1.cpp b/laboap1/laboap1/laboap1.cpp deleted file mode 100644 index 0329b66..0000000 --- a/laboap1/laboap1/laboap1.cpp +++ /dev/null @@ -1,151 +0,0 @@ -#include -#include -#include - -void printArray(int arr[], int size) { - for (int i = 0; i < size; i++) { - printf("%d ", arr[i]); - } - printf("\n"); -} - -void insertionSort(int arr[], int size) { - int i, key, j; - for (i = 1; i < size; i++) { - key = arr[i]; - j = i - 1; - - while (j >= 0 && arr[j] > key) { - arr[j + 1] = arr[j]; - j = j - 1; - } - arr[j + 1] = key; - } -} - -void merge(int arr[], int left, int mid, int right) { - int i, j, k; - int n1 = mid - left + 1; - int n2 = right - mid; - - int L[n1], R[n2]; - - for (i = 0; i < n1; i++) - L[i] = arr[left + i]; - for (j = 0; j < n2; j++) - R[j] = arr[mid + 1 + j]; - - i = 0; - j = 0; - k = left; - while (i < n1 && j < n2) { - if (L[i] <= R[j]) { - arr[k] = L[i]; - i++; - } - else { - arr[k] = R[j]; - j++; - } - k++; - } - - while (i < n1) { - arr[k] = L[i]; - i++; - k++; - } - - while (j < n2) { - arr[k] = R[j]; - j++; - k++; - } -} - -void mergeSort(int arr[], int left, int right) { - if (left < right) { - int mid = left + (right - left) / 2; - - mergeSort(arr, left, mid); - mergeSort(arr, mid + 1, right); - - merge(arr, left, mid, right); - } -} - -int main() { - srand(time(0)); - - int size; - printf("Enter the size of the array: "); - scanf("%d", &size); - - int arr[size]; - for (int i = 0; i < size; i++) { - arr[i] = rand() % 100; - } - - printf("Randomly generated array: "); - printArray(arr, size); - - int choice; - printf("Enter 1 to delete an element, 2 to insert a new element: "); - scanf("%d", &choice); - - if (choice == 1) { - int index; - printf("Enter the index of the element you want to delete: "); - scanf("%d", &index); - - for (int i = index; i < size - 1; i++) { - arr[i] = arr[i + 1]; - } - size--; - } - else if (choice == 2) { - int index, element; - printf("Enter the index at which you want to insert the new element: "); - scanf("%d", &index); - printf("Enter the new element: "); - scanf("%d", &element); - - for (int i = size; i > index; i--) { - arr[i] = arr[i - 1]; - } - arr[index] = element; - size++; - } - else { - printf("Invalid choice"); - return 0; - } - - printf("Modified array: "); - printArray(arr, size); - - int arr_copy[size]; - for (int i = 0; i < size; i++) { - arr_copy[i] = arr[i]; - } - - clock_t start_time = clock(); - insertionSort(arr, size); - clock_t end_time = clock(); - double insertion_time = ((double)(end_time - start_time)) / CLOCKS_PER_SEC; - - printf("Array sorted using Insertion Sort: "); - printArray(arr, size); - printf("Time taken by Insertion Sort: %f seconds\n", insertion_time); - - start_time = clock(); - mergeSort(arr_copy, 0, size - 1); - end_time = clock(); - double merge_time = ((double)(end_time - start_time)) / CLOCKS_PER_SEC; - - printf("Array sorted using Merge Sort: "); - printArray(arr_copy, size); - printf("Time taken by Merge Sort: %f seconds\n", merge_time); - - return 0; -} \ No newline at end of file diff --git a/laboap1/laboap1/laboap1.vcxproj b/laboap1/laboap1/laboap1.vcxproj deleted file mode 100644 index 085cb5f..0000000 --- a/laboap1/laboap1/laboap1.vcxproj +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {1f4724c2-6bc1-42c2-acc1-93aaa85ba624} - laboap1 - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - - - Console - true - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - - - - - \ No newline at end of file diff --git a/laboap1/laboap1/laboap1.vcxproj.filters b/laboap1/laboap1/laboap1.vcxproj.filters deleted file mode 100644 index 2bff827..0000000 --- a/laboap1/laboap1/laboap1.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Исходные файлы - - - \ No newline at end of file