From edb90ac4f08c2ed0136836d1a01fedd28d280110 Mon Sep 17 00:00:00 2001 From: Artem Date: Fri, 28 Oct 2022 19:29:36 +0300 Subject: [PATCH 1/7] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=BD=D0=B0=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=88=D0=BB=D0=BE=D0=B9=20=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D1=87=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- counting/counting.sln | 31 +++++ counting/counting/counting.vcxproj | 151 +++++++++++++++++++++ counting/counting/counting.vcxproj.filters | 30 ++++ counting/counting/list.c | 55 ++++++++ counting/counting/list.h | 13 ++ counting/counting/main.c | 34 +++++ 6 files changed, 314 insertions(+) create mode 100644 counting/counting.sln create mode 100644 counting/counting/counting.vcxproj create mode 100644 counting/counting/counting.vcxproj.filters create mode 100644 counting/counting/list.c create mode 100644 counting/counting/list.h create mode 100644 counting/counting/main.c diff --git a/counting/counting.sln b/counting/counting.sln new file mode 100644 index 0000000..74b9280 --- /dev/null +++ b/counting/counting.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "counting", "counting\counting.vcxproj", "{00B45251-5170-4B6C-A07F-686FF11AE05B}" +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 + {00B45251-5170-4B6C-A07F-686FF11AE05B}.Debug|x64.ActiveCfg = Debug|x64 + {00B45251-5170-4B6C-A07F-686FF11AE05B}.Debug|x64.Build.0 = Debug|x64 + {00B45251-5170-4B6C-A07F-686FF11AE05B}.Debug|x86.ActiveCfg = Debug|Win32 + {00B45251-5170-4B6C-A07F-686FF11AE05B}.Debug|x86.Build.0 = Debug|Win32 + {00B45251-5170-4B6C-A07F-686FF11AE05B}.Release|x64.ActiveCfg = Release|x64 + {00B45251-5170-4B6C-A07F-686FF11AE05B}.Release|x64.Build.0 = Release|x64 + {00B45251-5170-4B6C-A07F-686FF11AE05B}.Release|x86.ActiveCfg = Release|Win32 + {00B45251-5170-4B6C-A07F-686FF11AE05B}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9CA7A834-61D8-4336-9DB6-C1966836C159} + EndGlobalSection +EndGlobal diff --git a/counting/counting/counting.vcxproj b/counting/counting/counting.vcxproj new file mode 100644 index 0000000..5e0755a --- /dev/null +++ b/counting/counting/counting.vcxproj @@ -0,0 +1,151 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {00b45251-5170-4b6c-a07f-686ff11ae05b} + counting + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + false + _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/counting/counting/counting.vcxproj.filters b/counting/counting/counting.vcxproj.filters new file mode 100644 index 0000000..e9c0473 --- /dev/null +++ b/counting/counting/counting.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {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/counting/counting/list.c b/counting/counting/list.c new file mode 100644 index 0000000..3673305 --- /dev/null +++ b/counting/counting/list.c @@ -0,0 +1,55 @@ +#include "list.h" +#include +#include + +typedef struct Node { + int startPosition; + struct Node* next; +} Node; + +struct List { + Node* head; +}; + +bool isEmpty(List* list) { + return list->head == NULL; +} + +int top(List* list) { + if (list->head == NULL) { + return -1; + } + return list->head->startPosition; +} + + +void addPositions(List* list, int size) { + + int i = 0; + Node* walker = list->head; + while (i < size) { + Node* newNode = calloc(1, sizeof(Node)); + if (newNode == NULL) { + return NULL; + } + + if (list->head != NULL) { + newNode->startPosition = i; + newNode->next = list->head; + walker->next = newNode; + walker = walker->next; + } + if (list->head == NULL) { + newNode->startPosition = i; + list->head = newNode; + list->head->next = list->head; + walker = list->head; + } + ++i; + } +} + +List* createList(void) { + List* list = calloc(1, sizeof(List)); + return list; +} \ No newline at end of file diff --git a/counting/counting/list.h b/counting/counting/list.h new file mode 100644 index 0000000..975994d --- /dev/null +++ b/counting/counting/list.h @@ -0,0 +1,13 @@ +#pragma once +#include +#include + +typedef struct List List; + +bool isEmpty(List* list); + +List* createList(void); + +int top(List* list); + +void addPositions(List* list, int size); \ No newline at end of file diff --git a/counting/counting/main.c b/counting/counting/main.c new file mode 100644 index 0000000..1fad98d --- /dev/null +++ b/counting/counting/main.c @@ -0,0 +1,34 @@ +#include +#include +#include "list.h" +#include + +int scanOne(); + +int whichPosition(int size) { + List* list = createList(); + addPositions(list, size); + +} + +int main() { + setlocale(LC_ALL, "RUS"); + printf(" \n"); + int size = scanOne(); + whichPosition(size); +} + +int scanOne() { + int number = 0; + int checkScanf = scanf("%d", &number); + + while (checkScanf != 1) { + while (getchar() != '\n') { + } + + printf("...\n"); + checkScanf = scanf("%d", &number); + } + + return number; +} \ No newline at end of file From 70e50a812bafc0c01a7ba9917e22338c5fe09fff Mon Sep 17 00:00:00 2001 From: Artem Date: Fri, 28 Oct 2022 21:16:00 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D1=81=D1=87=D1=91=D1=82,=20=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BB=D0=B8=D1=81=D1=8C=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- counting/counting/list.c | 42 +++++++++++++++++++++++++++++++++++++++- counting/counting/list.h | 4 +++- counting/counting/main.c | 11 ++++++++--- 3 files changed, 52 insertions(+), 5 deletions(-) diff --git a/counting/counting/list.c b/counting/counting/list.c index 3673305..7c84c31 100644 --- a/counting/counting/list.c +++ b/counting/counting/list.c @@ -52,4 +52,44 @@ void addPositions(List* list, int size) { List* createList(void) { List* list = calloc(1, sizeof(List)); return list; -} \ No newline at end of file +} + +int counting(List* list, int size, int step) { + + int newStep = step % size; + Node* walker = list->head; + if (newStep == 0) { + newStep = size; + } + int i = 0; + while (i == 0 && list->head->next != list->head) { + while (i + 1 < newStep - 1) { + walker = walker->next; + ++i; + } + if (walker->next->next == NULL) { + return -1; + } + Node* walkerNext = walker->next->next; + free(walker->next); + walker->next = walkerNext; + } + + while (list->head->next != list->head) { + int i = 0; + while (i < newStep - 1) { + walker = walker->next; + ++i; + } + Node* walkerNext = walker->next->next; + if (list->head == walker->next) { + list->head = walkerNext; + } + free(walker->next); + walker->next = walkerNext; + } + int result = list->head->startPosition; + printf("%d\n", list->head->next->startPosition); + free(list->head); + return result; +} diff --git a/counting/counting/list.h b/counting/counting/list.h index 975994d..ba528f8 100644 --- a/counting/counting/list.h +++ b/counting/counting/list.h @@ -10,4 +10,6 @@ List* createList(void); int top(List* list); -void addPositions(List* list, int size); \ No newline at end of file +void addPositions(List* list, int size); + +int counting(List* list, int size, int step); \ No newline at end of file diff --git a/counting/counting/main.c b/counting/counting/main.c index 1fad98d..b1eec2c 100644 --- a/counting/counting/main.c +++ b/counting/counting/main.c @@ -5,17 +5,22 @@ int scanOne(); -int whichPosition(int size) { +int whichPosition(int size, int step) { List* list = createList(); addPositions(list, size); - + return counting(list, size, step); } int main() { setlocale(LC_ALL, "RUS"); printf(" \n"); int size = scanOne(); - whichPosition(size); + if (size == 0) { + return 0; + } + printf(" \n"); + int step = scanOne(); + printf("%s %d", " , , . : ", whichPosition(size, step)); } int scanOne() { From 43d74ac24ef374d3ca1e816875a1ba64331754be Mon Sep 17 00:00:00 2001 From: Artem Date: Fri, 28 Oct 2022 21:39:56 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B,=20=D0=BE=D0=B4=D0=BD=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=20=D0=BE=D1=81=D1=82=D0=B0=D0=BB=D0=BE=D1=81=D1=8C?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B5=D0=B4=D1=83=D0=BF=D1=80=D0=B5=D0=B6=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=20=D0=B8=D0=BD=D0=B8=D1=86?= =?UTF-8?q?=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B4=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B8=D0=B7=20=D1=83=D0=BA?= =?UTF-8?q?=D0=B0=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D0=B5=D0=B9,=20=D1=85?= =?UTF-8?q?=D0=BE=D1=82=D1=8C=20=D1=8F=20=D0=B5=D0=B3=D0=BE=20=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- counting/counting/list.c | 20 +++++++++++++------- counting/counting/main.c | 23 ++++++++++++++++++++++- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/counting/counting/list.c b/counting/counting/list.c index 7c84c31..ab07afe 100644 --- a/counting/counting/list.c +++ b/counting/counting/list.c @@ -62,6 +62,7 @@ int counting(List* list, int size, int step) { newStep = size; } int i = 0; + Node* walkerNext = NULL; while (i == 0 && list->head->next != list->head) { while (i + 1 < newStep - 1) { walker = walker->next; @@ -70,26 +71,31 @@ int counting(List* list, int size, int step) { if (walker->next->next == NULL) { return -1; } - Node* walkerNext = walker->next->next; + walkerNext = walker->next->next; free(walker->next); walker->next = walkerNext; } - - while (list->head->next != list->head) { + Node* walkerNewNext = NULL; + while (list->head != NULL && list->head->next != list->head) { int i = 0; while (i < newStep - 1) { walker = walker->next; ++i; } - Node* walkerNext = walker->next->next; + if (walker->next == NULL) { + return -1; + } + walkerNewNext = walker->next->next; if (list->head == walker->next) { - list->head = walkerNext; + list->head = walkerNewNext; } free(walker->next); - walker->next = walkerNext; + walker->next = walkerNewNext; + } + if (list->head == NULL) { + return -1; } int result = list->head->startPosition; - printf("%d\n", list->head->next->startPosition); free(list->head); return result; } diff --git a/counting/counting/main.c b/counting/counting/main.c index b1eec2c..8a4f501 100644 --- a/counting/counting/main.c +++ b/counting/counting/main.c @@ -2,6 +2,7 @@ #include #include "list.h" #include +#include int scanOne(); @@ -11,8 +12,22 @@ int whichPosition(int size, int step) { return counting(list, size, step); } +bool test1(void) { + return whichPosition(5, 3) == 3; +} + +bool test2(void) { + return whichPosition(1, 3) == 0; +} + int main() { setlocale(LC_ALL, "RUS"); + if (test1() && test2()) { + printf(" !\n"); + } else { + printf("..."); + return -1; + } printf(" \n"); int size = scanOne(); if (size == 0) { @@ -20,7 +35,13 @@ int main() { } printf(" \n"); int step = scanOne(); - printf("%s %d", " , , . : ", whichPosition(size, step)); + int result = whichPosition(size, step); + if (result == -1) { + printf("..."); + return -1; + } else { + printf("%s %d", " , , . : ", result); + } } int scanOne() { From e2b64eefe78a5e1fe294e785d97307d20f8e8b0d Mon Sep 17 00:00:00 2001 From: Palezehvat <114094069+Palezehvat@users.noreply.github.com> Date: Fri, 18 Nov 2022 14:49:04 +0300 Subject: [PATCH 4/7] Delete HomeworksAccept directory --- HomeworksAccept/homework21.09/read.me | 1 - HomeworksAccept/homework28.09/read.me | 1 - HomeworksAccept/read.me | 1 - 3 files changed, 3 deletions(-) delete mode 100644 HomeworksAccept/homework21.09/read.me delete mode 100644 HomeworksAccept/homework28.09/read.me delete mode 100644 HomeworksAccept/read.me diff --git a/HomeworksAccept/homework21.09/read.me b/HomeworksAccept/homework21.09/read.me deleted file mode 100644 index 5e4d090..0000000 --- a/HomeworksAccept/homework21.09/read.me +++ /dev/null @@ -1 +0,0 @@ -3 домашка diff --git a/HomeworksAccept/homework28.09/read.me b/HomeworksAccept/homework28.09/read.me deleted file mode 100644 index 5061ad0..0000000 --- a/HomeworksAccept/homework28.09/read.me +++ /dev/null @@ -1 +0,0 @@ -4 домашка diff --git a/HomeworksAccept/read.me b/HomeworksAccept/read.me deleted file mode 100644 index 1773bf8..0000000 --- a/HomeworksAccept/read.me +++ /dev/null @@ -1 +0,0 @@ -Здесь представлены домашнии работы, прошедшии проверку From 1fb9cfbc3fee2567bc71c78a5d7f0de04f36f145 Mon Sep 17 00:00:00 2001 From: Artem Date: Fri, 23 Dec 2022 11:52:52 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D0=A0=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- counting/counting/list.c | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/counting/counting/list.c b/counting/counting/list.c index ab07afe..870d4a9 100644 --- a/counting/counting/list.c +++ b/counting/counting/list.c @@ -22,9 +22,9 @@ int top(List* list) { return list->head->startPosition; } +// , void addPositions(List* list, int size) { - int i = 0; Node* walker = list->head; while (i < size) { @@ -33,14 +33,13 @@ void addPositions(List* list, int size) { return NULL; } + newNode->startPosition = i; + if (list->head != NULL) { - newNode->startPosition = i; newNode->next = list->head; walker->next = newNode; walker = walker->next; - } - if (list->head == NULL) { - newNode->startPosition = i; + } else { list->head = newNode; list->head->next = list->head; walker = list->head; @@ -55,26 +54,9 @@ List* createList(void) { } int counting(List* list, int size, int step) { - int newStep = step % size; Node* walker = list->head; - if (newStep == 0) { - newStep = size; - } int i = 0; - Node* walkerNext = NULL; - while (i == 0 && list->head->next != list->head) { - while (i + 1 < newStep - 1) { - walker = walker->next; - ++i; - } - if (walker->next->next == NULL) { - return -1; - } - walkerNext = walker->next->next; - free(walker->next); - walker->next = walkerNext; - } Node* walkerNewNext = NULL; while (list->head != NULL && list->head->next != list->head) { int i = 0; From 6953509f5ec5e5195b31a1b3a30d1942566bc980 Mon Sep 17 00:00:00 2001 From: Artem Date: Fri, 23 Dec 2022 15:07:51 +0300 Subject: [PATCH 6/7] =?UTF-8?q?=D0=A0=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- counting/counting/list.c | 37 +++++++++++++++++++++++++++---------- counting/counting/list.h | 4 +++- counting/counting/main.c | 2 +- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/counting/counting/list.c b/counting/counting/list.c index 870d4a9..71fec9e 100644 --- a/counting/counting/list.c +++ b/counting/counting/list.c @@ -30,6 +30,7 @@ void addPositions(List* list, int size) { while (i < size) { Node* newNode = calloc(1, sizeof(Node)); if (newNode == NULL) { + clearList(&list); return NULL; } @@ -53,31 +54,47 @@ List* createList(void) { return list; } -int counting(List* list, int size, int step) { +int counting(List** list, int size, int step) { int newStep = step % size; - Node* walker = list->head; + Node* walker = (*list)->head; int i = 0; Node* walkerNewNext = NULL; - while (list->head != NULL && list->head->next != list->head) { + while ((*list)->head != NULL && (*list)->head->next != (*list)->head) { int i = 0; - while (i < newStep - 1) { + while (i < newStep - 2) { walker = walker->next; ++i; } - if (walker->next == NULL) { + if (walker->next == NULL || walker->next->next == NULL) { + clearList(list); return -1; } walkerNewNext = walker->next->next; - if (list->head == walker->next) { - list->head = walkerNewNext; + if ((*list)->head == walker->next) { + (*list)->head = walkerNewNext; } free(walker->next); walker->next = walkerNewNext; } - if (list->head == NULL) { + if ((*list)->head == NULL) { + free(*list); return -1; } - int result = list->head->startPosition; - free(list->head); + int result = (*list)->head->startPosition; + free((*list)->head); return result; } + +void clearList(List** list) { + while (isEmpty(*list)) { + Node* prevWalker = (*list)->head; + Node* walker = prevWalker->next; + free(prevWalker); + while (walker != NULL) { + prevWalker = walker; + walker = walker->next; + free(prevWalker); + } + } + free(*list); +} \ No newline at end of file diff --git a/counting/counting/list.h b/counting/counting/list.h index ba528f8..fb496f9 100644 --- a/counting/counting/list.h +++ b/counting/counting/list.h @@ -12,4 +12,6 @@ int top(List* list); void addPositions(List* list, int size); -int counting(List* list, int size, int step); \ No newline at end of file +int counting(List** list, int size, int step); + +void clearList(List** list); \ No newline at end of file diff --git a/counting/counting/main.c b/counting/counting/main.c index 8a4f501..e73bb88 100644 --- a/counting/counting/main.c +++ b/counting/counting/main.c @@ -9,7 +9,7 @@ int scanOne(); int whichPosition(int size, int step) { List* list = createList(); addPositions(list, size); - return counting(list, size, step); + return counting(&list, size, step); } bool test1(void) { From fc15a790c2e7739430854ce7be048eab5e952266 Mon Sep 17 00:00:00 2001 From: Artem Date: Fri, 23 Dec 2022 17:30:23 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=A0=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- counting/counting/list.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/counting/counting/list.c b/counting/counting/list.c index 71fec9e..207ecdf 100644 --- a/counting/counting/list.c +++ b/counting/counting/list.c @@ -82,19 +82,18 @@ int counting(List** list, int size, int step) { } int result = (*list)->head->startPosition; free((*list)->head); + free(*list); + *list = NULL; return result; } void clearList(List** list) { - while (isEmpty(*list)) { + while ((*list)->head != (*list)->head->next) { Node* prevWalker = (*list)->head; - Node* walker = prevWalker->next; + (*list)->head = (*list)->head->next; free(prevWalker); - while (walker != NULL) { - prevWalker = walker; - walker = walker->next; - free(prevWalker); - } } + free((*list)->head); free(*list); + *list = NULL; } \ No newline at end of file