From 70bbd74e9e04b13e4b287585c577080132f6ff57 Mon Sep 17 00:00:00 2001 From: BoiledMilk123 Date: Mon, 19 Feb 2024 10:27:36 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=201.=20=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DrawningElectricLocomotive.cs | 117 ++++--- cfdiv3/cfdiv3.sln | 31 ++ cfdiv3/cfdiv3/A.cpp | 70 ++++ cfdiv3/cfdiv3/cfdiv3.vcxproj | 135 ++++++++ cfdiv3/cfdiv3/cfdiv3.vcxproj.filters | 22 ++ lab_aisd/lab_aisd.sln | 31 ++ lab_aisd/lab_aisd/lab1.cpp | 301 ++++++++++++++++++ lab_aisd/lab_aisd/lab_aisd.vcxproj | 135 ++++++++ lab_aisd/lab_aisd/lab_aisd.vcxproj.filters | 22 ++ 9 files changed, 815 insertions(+), 49 deletions(-) create mode 100644 cfdiv3/cfdiv3.sln create mode 100644 cfdiv3/cfdiv3/A.cpp create mode 100644 cfdiv3/cfdiv3/cfdiv3.vcxproj create mode 100644 cfdiv3/cfdiv3/cfdiv3.vcxproj.filters create mode 100644 lab_aisd/lab_aisd.sln create mode 100644 lab_aisd/lab_aisd/lab1.cpp create mode 100644 lab_aisd/lab_aisd/lab_aisd.vcxproj create mode 100644 lab_aisd/lab_aisd/lab_aisd.vcxproj.filters diff --git a/ProjectElectricLocomotive/ProjectElectricLocomotive/DrawningElectricLocomotive.cs b/ProjectElectricLocomotive/ProjectElectricLocomotive/DrawningElectricLocomotive.cs index 616d472..1842639 100644 --- a/ProjectElectricLocomotive/ProjectElectricLocomotive/DrawningElectricLocomotive.cs +++ b/ProjectElectricLocomotive/ProjectElectricLocomotive/DrawningElectricLocomotive.cs @@ -34,13 +34,13 @@ public class DrawningElectricLocomotive /// /// Ширина прорисовки электровоза /// - private readonly int _drawningElectricLocomotiveWidth = 100; + private readonly int _drawningElectricLocomotiveWidth = 83; /// /// Высота прорисовки электровоза /// - private readonly int _drawingElectricLocomotiveHeight = 45; + private readonly int _drawningElectricLocomotiveHeight = 45; /// /// Инициализация свойств @@ -71,13 +71,19 @@ public class DrawningElectricLocomotive /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах public bool SetPictureSize(int width, int height) { - // Проверка, что объект "влезает" в размеры поля - // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена - if(_drawingElectricLocomotiveHeight > height || _drawningElectricLocomotiveWidth > width) + if(_drawningElectricLocomotiveHeight > height || _drawningElectricLocomotiveWidth > width) { return false; } + if(_startPosY.HasValue && _startPosY - _drawningElectricLocomotiveHeight < _pictureHeight ) + { + _startPosY -= _drawningElectricLocomotiveHeight; + } + if (_startPosX.HasValue && _startPosX - _drawningElectricLocomotiveWidth < _pictureWidth ) + { + _startPosX -= _drawningElectricLocomotiveWidth; + } _pictureWidth = width; _pictureHeight = height; return true; @@ -94,17 +100,30 @@ public class DrawningElectricLocomotive return; } - if (_drawingElectricLocomotiveHeight + y > _pictureHeight || _drawningElectricLocomotiveWidth + x > _pictureWidth) + + _startPosX = x; + _startPosY = y; + + if ( _drawningElectricLocomotiveHeight + y > _pictureHeight) + { + _startPosY = _pictureHeight - _drawningElectricLocomotiveHeight; + } + if ( _drawningElectricLocomotiveWidth + x > _pictureWidth) + { + _startPosX = _pictureWidth - _drawningElectricLocomotiveWidth; + + } + if (x < 0) { _startPosX = 0; - _startPosY = 0; + } - else + if (y < 0) { - _startPosX = x; - _startPosY = y; + _startPosY = 0; + } - + } /// @@ -123,14 +142,14 @@ public class DrawningElectricLocomotive { //влево case DirectionType.Left: - if(_startPosX.Value - EntityElectricLocomotive.Step + 20 > 0) + if(_startPosX.Value - EntityElectricLocomotive.Step > 0) { _startPosX -= (int)EntityElectricLocomotive.Step; } return true; //вверх case DirectionType.Up: - if(_startPosY.Value - EntityElectricLocomotive.Step + 3 > 0) + if(_startPosY.Value - EntityElectricLocomotive.Step > 0) { _startPosY -= (int)EntityElectricLocomotive.Step; } @@ -144,7 +163,7 @@ public class DrawningElectricLocomotive return true; //вниз case DirectionType.Down: - if (_startPosY.Value + _drawingElectricLocomotiveHeight + EntityElectricLocomotive.Step < _pictureHeight) + if (_startPosY.Value + _drawningElectricLocomotiveHeight + EntityElectricLocomotive.Step < _pictureHeight) { _startPosY += (int)EntityElectricLocomotive.Step; } @@ -175,31 +194,31 @@ public class DrawningElectricLocomotive Brush whiteBrush = new SolidBrush(Color.White); //Инициализация опорных точек для прорисовки корпуса - Point pointStart = new Point(_startPosX.Value + 90, _startPosY.Value + 20); - Point point1 = new Point(_startPosX.Value + 90, _startPosY.Value + 5); - Point point2 = new Point(_startPosX.Value + 25, _startPosY.Value + 5); - Point pointFinish = new Point(_startPosX.Value + 20, _startPosY.Value + 20); + Point pointStart = new Point(_startPosX.Value + 75, _startPosY.Value + 20); + Point point1 = new Point(_startPosX.Value + 75, _startPosY.Value + 5); + Point point2 = new Point(_startPosX.Value + 10, _startPosY.Value + 5); + Point pointFinish = new Point(_startPosX.Value + 5, _startPosY.Value + 20); //Инициализация опорных точек для прорисовки первой "юбки" - Point point3 = new Point(_startPosX.Value + 22, _startPosY.Value + 37); - Point point4 = new Point(_startPosX.Value + 15, _startPosY.Value + 37 +6 ); - Point point5 = new Point(_startPosX.Value + 22, _startPosY.Value + 37 + 6 ); + Point point3 = new Point(_startPosX.Value + 7, _startPosY.Value + 37); + Point point4 = new Point(_startPosX.Value + 0, _startPosY.Value + 37 +6 ); + Point point5 = new Point(_startPosX.Value + 7, _startPosY.Value + 37 + 6 ); //Инициализация опорных точек для прорисовки второй "юбки" - Point point6 = new Point(_startPosX.Value + 84, _startPosY.Value + 37); - Point point7 = new Point(_startPosX.Value + 90 + 7, _startPosY.Value + 37 + 6); - Point point8 = new Point(_startPosX.Value + 84, _startPosY.Value + 37 + 6); + Point point6 = new Point(_startPosX.Value + 69, _startPosY.Value + 37); + Point point7 = new Point(_startPosX.Value + 75 + 7, _startPosY.Value + 37 + 6); + Point point8 = new Point(_startPosX.Value + 69, _startPosY.Value + 37 + 6); //Инициализация опорных точек для прорисовки "рогов" - Point pointHorns1 = new Point(_startPosX.Value + 28, _startPosY.Value+5); - Point pointHorns2 = new Point(_startPosX.Value + 31, _startPosY.Value + 2); - Point pointHorns3 = new Point(_startPosX.Value + 26, _startPosY.Value); + Point pointHorns1 = new Point(_startPosX.Value + 13, _startPosY.Value+5); + Point pointHorns2 = new Point(_startPosX.Value + 16, _startPosY.Value + 2); + Point pointHorns3 = new Point(_startPosX.Value + 11, _startPosY.Value); //Инициализация опорных точек для прорисовки молнии на хранилище батарей - Point pointLightning1 = new Point(_startPosX.Value + 54, _startPosY.Value + 37); - Point pointLightning2 = new Point(_startPosX.Value + 52, _startPosY.Value + 39); - Point pointLightning3 = new Point(_startPosX.Value + 54, _startPosY.Value + 40); - Point pointLightning4 = new Point(_startPosX.Value + 52, _startPosY.Value + 41); + Point pointLightning1 = new Point(_startPosX.Value + 39, _startPosY.Value + 37); + Point pointLightning2 = new Point(_startPosX.Value + 37, _startPosY.Value + 39); + Point pointLightning3 = new Point(_startPosX.Value + 39, _startPosY.Value + 40); + Point pointLightning4 = new Point(_startPosX.Value + 37, _startPosY.Value + 41); //Совокупность точек полигона уголка первой "юбки" Point[] firstTrianglePoints = @@ -225,7 +244,7 @@ public class DrawningElectricLocomotive g.FillPolygon(blackBrush, secondTrianglePoints); //Прорисовка корпуса - g.DrawRectangle(pen, _startPosX.Value + 20, _startPosY.Value + 20, 70, 17); + g.DrawRectangle(pen, _startPosX.Value + 5, _startPosY.Value + 20, 70, 17); g.DrawLine(pen, point3, point4); g.DrawLine(pen, pointStart, point1); @@ -235,41 +254,41 @@ public class DrawningElectricLocomotive //Прорисовка передней и задней "юбки" - g.FillRectangle(blackBrush, _startPosX.Value + 22, _startPosY.Value + 37, 25, 5.3f); - g.FillRectangle(blackBrush, _startPosX.Value + 62, _startPosY.Value + 37, 22, 5.3f); + g.FillRectangle(blackBrush, _startPosX.Value + 7, _startPosY.Value + 37, 25, 5.3f); + g.FillRectangle(blackBrush, _startPosX.Value + 47, _startPosY.Value + 37, 22, 5.3f); //Прорисовка двух передних колёс - g.FillEllipse(whiteBrush, _startPosX.Value + 21.3f, _startPosY.Value + 37, 10, 10); + g.FillEllipse(whiteBrush, _startPosX.Value + 6.3f, _startPosY.Value + 37, 10, 10); + g.DrawEllipse(penSolid, _startPosX.Value + 9, _startPosY.Value + 37, 8, 8); + g.FillEllipse(additionalBrush, _startPosX.Value + 9, _startPosY.Value + 37, 8, 8); g.DrawEllipse(penSolid, _startPosX.Value + 24, _startPosY.Value + 37, 8, 8); g.FillEllipse(additionalBrush, _startPosX.Value + 24, _startPosY.Value + 37, 8, 8); - g.DrawEllipse(penSolid, _startPosX.Value + 39, _startPosY.Value + 37, 8, 8); - g.FillEllipse(additionalBrush, _startPosX.Value + 39, _startPosY.Value + 37, 8, 8); //Прорисовка "рогов" электровоза g.DrawLine(penSolid, pointHorns1, pointHorns2); g.DrawLine(penSolid, pointHorns2, pointHorns3); //Прорисовка "хранилища батарей" электровоза - g.FillRectangle(blackBrush, _startPosX.Value + 51, _startPosY.Value + 37, 8, 4.5f); + g.FillRectangle(blackBrush, _startPosX.Value + 36, _startPosY.Value + 37, 8, 4.5f); g.DrawLine(penSolidYellow, pointLightning1, pointLightning2); g.DrawLine(penSolidYellow, pointLightning2, pointLightning3); g.DrawLine(penSolidYellow, pointLightning3, pointLightning4); //Прорисовка двух задних колёс - g.FillEllipse(whiteBrush, _startPosX.Value + 40 + 38, _startPosY.Value + 37, 10, 10); - g.DrawEllipse(penSolid, _startPosX.Value + 40 + 26, _startPosY.Value + 37, 8, 8); - g.FillEllipse(additionalBrush, _startPosX.Value + 40 + 26, _startPosY.Value + 37, 8, 8); - g.DrawEllipse(penSolid, _startPosX.Value+ 40 + 37, _startPosY.Value + 37, 8, 8); - g.FillEllipse(additionalBrush, _startPosX.Value + 40 + 37, _startPosY.Value + 37, 8, 8); + g.FillEllipse(whiteBrush, _startPosX.Value + 25 + 38, _startPosY.Value + 37, 10, 10); + g.DrawEllipse(penSolid, _startPosX.Value + 25 + 26, _startPosY.Value + 37, 8, 8); + g.FillEllipse(additionalBrush, _startPosX.Value + 25 + 26, _startPosY.Value + 37, 8, 8); + g.DrawEllipse(penSolid, _startPosX.Value+ 25 + 37, _startPosY.Value + 37, 8, 8); + g.FillEllipse(additionalBrush, _startPosX.Value + 25 + 37, _startPosY.Value + 37, 8, 8); //Прорисовка заднего "шлюза" - g.FillRectangle(blackBrush, _startPosX.Value + 90, _startPosY.Value + 9, 5.7f, 27.4f); + g.FillRectangle(blackBrush, _startPosX.Value + 75, _startPosY.Value + 9, 5.7f, 27.4f); //Прорисовка первого и третьего окна - g.DrawRectangle(windowPen, _startPosX.Value + 27, _startPosY.Value + 9, 8, 8); - g.DrawRectangle(windowPen, _startPosX.Value + 78, _startPosY.Value + 9, 8, 8); + g.DrawRectangle(windowPen, _startPosX.Value + 12, _startPosY.Value + 9, 8, 8); + g.DrawRectangle(windowPen, _startPosX.Value + 63, _startPosY.Value + 9, 8, 8); //TODO Опциональная прорисовка колёс для усложненной работы @@ -294,11 +313,11 @@ public class DrawningElectricLocomotive if (EntityElectricLocomotive.BodyKit) { Brush brWhite = new SolidBrush(Color.White); - g.DrawRectangle(windowPen, _startPosX.Value + 39.3f, _startPosY.Value + 9, 8, 8); + g.DrawRectangle(windowPen, _startPosX.Value + 24.3f, _startPosY.Value + 9, 8, 8); - g.DrawRectangle(pen, _startPosX.Value + 50, _startPosY.Value + 14, 8, 12); + g.DrawRectangle(pen, _startPosX.Value + 35, _startPosY.Value + 14, 8, 12); - g.FillRectangle(brWhite, _startPosX.Value + 51, _startPosY.Value + 16, 7, 10); + g.FillRectangle(brWhite, _startPosX.Value + 36, _startPosY.Value + 16, 7, 10); } } diff --git a/cfdiv3/cfdiv3.sln b/cfdiv3/cfdiv3.sln new file mode 100644 index 0000000..7695ced --- /dev/null +++ b/cfdiv3/cfdiv3.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34024.191 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cfdiv3", "cfdiv3\cfdiv3.vcxproj", "{A580EAEA-AEBB-4210-8DFA-E3E1241D9FCF}" +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 + {A580EAEA-AEBB-4210-8DFA-E3E1241D9FCF}.Debug|x64.ActiveCfg = Debug|x64 + {A580EAEA-AEBB-4210-8DFA-E3E1241D9FCF}.Debug|x64.Build.0 = Debug|x64 + {A580EAEA-AEBB-4210-8DFA-E3E1241D9FCF}.Debug|x86.ActiveCfg = Debug|Win32 + {A580EAEA-AEBB-4210-8DFA-E3E1241D9FCF}.Debug|x86.Build.0 = Debug|Win32 + {A580EAEA-AEBB-4210-8DFA-E3E1241D9FCF}.Release|x64.ActiveCfg = Release|x64 + {A580EAEA-AEBB-4210-8DFA-E3E1241D9FCF}.Release|x64.Build.0 = Release|x64 + {A580EAEA-AEBB-4210-8DFA-E3E1241D9FCF}.Release|x86.ActiveCfg = Release|Win32 + {A580EAEA-AEBB-4210-8DFA-E3E1241D9FCF}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C6324E34-5959-487B-98C6-891D3D3A1B32} + EndGlobalSection +EndGlobal diff --git a/cfdiv3/cfdiv3/A.cpp b/cfdiv3/cfdiv3/A.cpp new file mode 100644 index 0000000..e2cb95d --- /dev/null +++ b/cfdiv3/cfdiv3/A.cpp @@ -0,0 +1,70 @@ +#define _USE_MATH_DEFINES +#define _CRT_SECURE_NO_WARNINGS +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +typedef long long ll; +typedef long double ld; +typedef pair pll; +typedef pair pii; + +const ll LINF = 100098809990; +const int INF = 1009000999; +const int N = 1002; +const ld PI = 3.1415926535; +const ld E = 2.7182818284; +const ll MOD = 1000000007; +const int MAX = 150010; + + +ll solve(vectorv, ll n) { + ll time = v[0]-1, k = 0; + for (int j = 0; j < n; j++) { + for (int i = time + 1; i < 10e10; i++) { + if (i % v[j] == 0) { + k += 1; + time = i; + if (k == n) { + return i; + } + break; + } + } + } + +} + +int main() { + ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); + + ll t, n, zn, f = 0; + + + cin >> t; + for (int i = 0; i < t; i++) { + cin >> n; + vectorv; + for (int j = 0; j < n; j++) { + cin >> zn; + v.push_back(zn); + } + f = solve(v, n); + cout << f << '\n'; + + + } + + return 0; +} \ No newline at end of file diff --git a/cfdiv3/cfdiv3/cfdiv3.vcxproj b/cfdiv3/cfdiv3/cfdiv3.vcxproj new file mode 100644 index 0000000..743f735 --- /dev/null +++ b/cfdiv3/cfdiv3/cfdiv3.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {a580eaea-aebb-4210-8dfa-e3e1241d9fcf} + cfdiv3 + 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/cfdiv3/cfdiv3/cfdiv3.vcxproj.filters b/cfdiv3/cfdiv3/cfdiv3.vcxproj.filters new file mode 100644 index 0000000..fd18e8a --- /dev/null +++ b/cfdiv3/cfdiv3/cfdiv3.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {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/lab_aisd/lab_aisd.sln b/lab_aisd/lab_aisd.sln new file mode 100644 index 0000000..c507d95 --- /dev/null +++ b/lab_aisd/lab_aisd.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34024.191 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lab_aisd", "lab_aisd\lab_aisd.vcxproj", "{DD05AB56-9070-4CED-A979-38A2FBA74B9A}" +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 + {DD05AB56-9070-4CED-A979-38A2FBA74B9A}.Debug|x64.ActiveCfg = Debug|x64 + {DD05AB56-9070-4CED-A979-38A2FBA74B9A}.Debug|x64.Build.0 = Debug|x64 + {DD05AB56-9070-4CED-A979-38A2FBA74B9A}.Debug|x86.ActiveCfg = Debug|Win32 + {DD05AB56-9070-4CED-A979-38A2FBA74B9A}.Debug|x86.Build.0 = Debug|Win32 + {DD05AB56-9070-4CED-A979-38A2FBA74B9A}.Release|x64.ActiveCfg = Release|x64 + {DD05AB56-9070-4CED-A979-38A2FBA74B9A}.Release|x64.Build.0 = Release|x64 + {DD05AB56-9070-4CED-A979-38A2FBA74B9A}.Release|x86.ActiveCfg = Release|Win32 + {DD05AB56-9070-4CED-A979-38A2FBA74B9A}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B1FBCA36-B401-40B8-BC85-D0E8E011D3C8} + EndGlobalSection +EndGlobal diff --git a/lab_aisd/lab_aisd/lab1.cpp b/lab_aisd/lab_aisd/lab1.cpp new file mode 100644 index 0000000..1aa6217 --- /dev/null +++ b/lab_aisd/lab_aisd/lab1.cpp @@ -0,0 +1,301 @@ +#include +#include +using namespace std; + +#define SIZE 100 + +struct Students { + string name; + int course_number; + string faculty; +}; + +struct Stack { + +public: + struct Node + { + public: + Students data; + Node* next; + Node(Students data) + { + this->data = data; + this->next = nullptr; + } + }; +private: + Node* head; + int size; +public: + Stack() + { + head = nullptr; + size = 0; + } + int length() + { + return size; + } + void push(Students data) + { + Node* temp = new Node(data); + temp->next = head; + head = temp; + size++; + } + Students top() + { + if (head == nullptr) exit(0); + return head->data; + } + void pop() + { + if (head == nullptr) return; + Node* ptr = head->next; + delete head; + head = ptr; + size--; + } + bool isEmpty() + { + return size != 0; + } + void print() + { + if (head == nullptr) return; + Node* ptr = head; + while(true) + { + cout << "Name = " << ptr->data.name << "\t"; + cout << "Course number = " << ptr->data.course_number << "\t"; + cout << "Faculty = " << ptr->data.faculty << "\n"; + if (ptr->next == nullptr) break; + ptr = ptr->next; + } + } + void erase() + { + if (head == nullptr) return; + Node* ptr = head; + while (ptr->next != nullptr) + { + head = ptr; + ptr = ptr->next; + delete head; + } + head = nullptr; + size = 0; + } + Node* begin() + { + return head; + } +}; + + +void merge(int arr[], int left[], int left_size, int right[], int right_size) +{ + int i = 0, j = 0, k = 0; + while (i < left_size && j < right_size) + { + if (left[i] < right[j]) + { + arr[k] = left[i]; + i++; + } + else + { + arr[k] = right[j]; + j++; + } + k++; + } + while (i < left_size) + { + arr[k] = left[i]; + i++; + k++; + } + while (j < right_size) + { + arr[k] = right[j]; + j++; + k++; + } +} + +void merge(Stack& stack, Stack& left, Stack& right) +{ + + while (left.isEmpty() && right.isEmpty()) { + if (left.top().name < right.top().name) + { + stack.push(left.top()); + left.pop(); + } + else + { + stack.push(right.top()); + right.pop(); + } + } + while(left.isEmpty()) + { + stack.push(left.top()); + left.pop(); + } + while (right.isEmpty()) + { + stack.push(right.top()); + right.pop(); + } +} + +void divide(Stack& stack) { + + if (stack.length() <= 1) { + return; + } + + int divide_to = (stack.length() % 2 == 0) ? stack.length() / 2 : stack.length() / 2 + 1; + + Stack stackLeft, stackRight; + + for (int i = 0; i < stack.length(); i++) + { + if (i < divide_to) + { + stackLeft.push(stack.top()); + stack.pop(); + } + else + { + stackRight.push(stack.top()); + stack.pop(); + } + } + + divide(stackLeft); + divide(stackRight); + merge(stack, stackLeft, stackRight); + +} + +void divide(int arr[], int size) +{ + if (size <= 1) + { + return; + } + + int divide_to = (size % 2 == 0) ? size/2 : size / 2 + 1; + + int left[SIZE]; + int right[SIZE]; + + for (int i = 0; i < size; ++i) + { + if (i < divide_to) left[i] = arr[i]; + else right[i - divide_to] = arr[i]; + } + + divide(left, divide_to); + divide(right, size - divide_to); + merge(arr, left, divide_to, right, size - divide_to); +} + +void ShakingSort(int arr[]) { + int control = SIZE - 1; + int left = 0, right = control; + do { + for (int i = left; i < right; i++) { + if (arr[i] > arr[i + 1]) { + swap(arr[i], arr[i + 1]); + control = i; + } + } + right = control; + for (int i = right; i > left; i--) { + if (arr[i] < arr[i - 1]) { + swap(arr[i], arr[i - 1]); + control = i; + } + } + left = control; + } while (left < right); +} + +void bubbleSort(Stack& stack) +{ + int swapped, i; + Stack::Node* ptr; + Stack::Node* lptr = nullptr; + + if (stack.begin() == nullptr) + return; + + do + { + swapped = 0; + ptr = stack.begin(); + + while (ptr->next != lptr) + { + if (ptr->data.name > ptr->next->data.name) + { + swap(ptr->data, ptr->next->data); + swapped = 1; + } + ptr = ptr->next; + } + lptr = ptr; + } while (swapped); +} + +int main() +{ + Stack Test; + if (Test.isEmpty()) cout << "Stack is empty\n"; + + Students student1; + student1.course_number = 4; + student1.faculty = "FIST"; + student1.name = "Aleksey Romanov"; + Test.push(student1); + + Students student2; + student2.course_number = 1; + student2.faculty = "IATU"; + student2.name = "Danila Bugrov"; + Test.push(student2); + + Students student3; + student3.course_number = 3; + student3.faculty = "RTF"; + student3.name = "Roman Ivanov"; + Test.push(student3); + + Students student4; + student4.course_number = 2; + student4.faculty = "RTF"; + student4.name = "Ivan Aleksandrov"; + Test.push(student4); + + Test.print(); + //Test.erase(); + bubbleSort(Test); + cout << '\n'; + Test.print(); + + + + /*int arr[SIZE]; + for (auto& e : arr) e = rand() % SIZE; + for (auto& e : arr) cout << e << " "; + cout << '\n'; + ShakingSort(arr); + for (auto& e : arr) cout << e << " "; + cout << '\n';*/ + +} \ No newline at end of file diff --git a/lab_aisd/lab_aisd/lab_aisd.vcxproj b/lab_aisd/lab_aisd/lab_aisd.vcxproj new file mode 100644 index 0000000..e19585a --- /dev/null +++ b/lab_aisd/lab_aisd/lab_aisd.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {dd05ab56-9070-4ced-a979-38a2fba74b9a} + labaisd + 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/lab_aisd/lab_aisd/lab_aisd.vcxproj.filters b/lab_aisd/lab_aisd/lab_aisd.vcxproj.filters new file mode 100644 index 0000000..b28bd20 --- /dev/null +++ b/lab_aisd/lab_aisd/lab_aisd.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {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