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 @@ -Здесь представлены домашнии работы, прошедшии проверку 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..207ecdf --- /dev/null +++ b/counting/counting/list.c @@ -0,0 +1,99 @@ +#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) { + clearList(&list); + return NULL; + } + + newNode->startPosition = i; + + if (list->head != NULL) { + newNode->next = list->head; + walker->next = newNode; + walker = walker->next; + } else { + list->head = newNode; + list->head->next = list->head; + walker = list->head; + } + ++i; + } +} + +List* createList(void) { + List* list = calloc(1, sizeof(List)); + return list; +} + +int counting(List** list, int size, int step) { + int newStep = step % size; + Node* walker = (*list)->head; + int i = 0; + Node* walkerNewNext = NULL; + while ((*list)->head != NULL && (*list)->head->next != (*list)->head) { + int i = 0; + while (i < newStep - 2) { + walker = walker->next; + ++i; + } + if (walker->next == NULL || walker->next->next == NULL) { + clearList(list); + return -1; + } + walkerNewNext = walker->next->next; + if ((*list)->head == walker->next) { + (*list)->head = walkerNewNext; + } + free(walker->next); + walker->next = walkerNewNext; + } + if ((*list)->head == NULL) { + free(*list); + return -1; + } + int result = (*list)->head->startPosition; + free((*list)->head); + free(*list); + *list = NULL; + return result; +} + +void clearList(List** list) { + while ((*list)->head != (*list)->head->next) { + Node* prevWalker = (*list)->head; + (*list)->head = (*list)->head->next; + free(prevWalker); + } + free((*list)->head); + free(*list); + *list = NULL; +} \ No newline at end of file diff --git a/counting/counting/list.h b/counting/counting/list.h new file mode 100644 index 0000000..fb496f9 --- /dev/null +++ b/counting/counting/list.h @@ -0,0 +1,17 @@ +#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); + +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 new file mode 100644 index 0000000..e73bb88 --- /dev/null +++ b/counting/counting/main.c @@ -0,0 +1,60 @@ +#include +#include +#include "list.h" +#include +#include + +int scanOne(); + +int whichPosition(int size, int step) { + List* list = createList(); + addPositions(list, size); + 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) { + return 0; + } + printf(" \n"); + int step = scanOne(); + int result = whichPosition(size, step); + if (result == -1) { + printf("..."); + return -1; + } else { + printf("%s %d", " , , . : ", result); + } +} + +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