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/balancedStaples/balancedStaples.sln b/balancedStaples/balancedStaples.sln new file mode 100644 index 0000000..5177753 --- /dev/null +++ b/balancedStaples/balancedStaples.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}") = "balancedStaples", "balancedStaples\balancedStaples.vcxproj", "{46537355-D9A5-46D5-B708-16078F3BA9C3}" +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 + {46537355-D9A5-46D5-B708-16078F3BA9C3}.Debug|x64.ActiveCfg = Debug|x64 + {46537355-D9A5-46D5-B708-16078F3BA9C3}.Debug|x64.Build.0 = Debug|x64 + {46537355-D9A5-46D5-B708-16078F3BA9C3}.Debug|x86.ActiveCfg = Debug|Win32 + {46537355-D9A5-46D5-B708-16078F3BA9C3}.Debug|x86.Build.0 = Debug|Win32 + {46537355-D9A5-46D5-B708-16078F3BA9C3}.Release|x64.ActiveCfg = Release|x64 + {46537355-D9A5-46D5-B708-16078F3BA9C3}.Release|x64.Build.0 = Release|x64 + {46537355-D9A5-46D5-B708-16078F3BA9C3}.Release|x86.ActiveCfg = Release|Win32 + {46537355-D9A5-46D5-B708-16078F3BA9C3}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3F667BC7-35D6-494F-A946-075F5C44FD74} + EndGlobalSection +EndGlobal diff --git a/balancedStaples/balancedStaples/balancedStaples.vcxproj b/balancedStaples/balancedStaples/balancedStaples.vcxproj new file mode 100644 index 0000000..8c89231 --- /dev/null +++ b/balancedStaples/balancedStaples/balancedStaples.vcxproj @@ -0,0 +1,151 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {46537355-d9a5-46d5-b708-16078f3ba9c3} + balancedStaples + 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/balancedStaples/balancedStaples/balancedStaples.vcxproj.filters b/balancedStaples/balancedStaples/balancedStaples.vcxproj.filters new file mode 100644 index 0000000..6498e61 --- /dev/null +++ b/balancedStaples/balancedStaples/balancedStaples.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/balancedStaples/balancedStaples/main.c b/balancedStaples/balancedStaples/main.c new file mode 100644 index 0000000..aa73f84 --- /dev/null +++ b/balancedStaples/balancedStaples/main.c @@ -0,0 +1,65 @@ +#include +#include +#include +#include +#include "stack.h" +#include + +bool isBalanced(char stringStaples[], int* errorCode) { + ElementStack* buffer = NULL; + size_t sizeStringStaples = strlen(stringStaples); + size_t i = 0; + while(i < sizeStringStaples) { + if (stringStaples[i] == '{' || stringStaples[i] == '(' || stringStaples[i] == '[') { + pushElements(&buffer, stringStaples[i]); + } else if (stringStaples[i] == ']' || stringStaples[i] == ')' || stringStaples[i] == '}') { + char lastOpenStaple = popElements(&buffer, errorCode); + if (*errorCode == 1 + || !((lastOpenStaple == '[' && stringStaples[i] == ']') + || (lastOpenStaple == '(' && stringStaples[i] == ')') + || (lastOpenStaple == '{' && stringStaples[i] == '}') )) { + clear(&buffer); + return false; + } + } else { + *errorCode = 1; + clear(&buffer); + return false; + } + ++i; + } + if (buffer != NULL) { + clear(&buffer); + return false; + } + return true; +} + +bool firstTest(void) { + char stringStaples[] = "{(})"; + int errorCode = 0; + return !isBalanced(stringStaples, &errorCode) && errorCode == 0; +} + +bool secondTest(void) { + char stringStaples[] = "{()}"; + int errorCode = 0; + return isBalanced(stringStaples, &errorCode) && errorCode == 0; +} + +int main() { + setlocale(LC_ALL, "RUS"); + if (!firstTest() || !secondTest()) { + printf("...\n"); + return -1; + } else { + printf(" !\n"); + } + printf(" ( 100 )\n"); + char stringStaples[100]; + gets_s(stringStaples, 100); + int errorCode = 0; + printf(isBalanced(stringStaples, &errorCode) && errorCode == 0 + ? " \n" + : errorCode != 0 ? "..." : " \n"); +} \ No newline at end of file diff --git a/balancedStaples/balancedStaples/stack.c b/balancedStaples/balancedStaples/stack.c new file mode 100644 index 0000000..b5c843f --- /dev/null +++ b/balancedStaples/balancedStaples/stack.c @@ -0,0 +1,43 @@ +#include "stack.h" +#include +#include +#include + +int pushElements(ElementStack** head, char value) { + ElementStack* temp = malloc(sizeof(ElementStack)); + if (temp == NULL) { + return -1; + } + temp->value = value; + temp->next = *head; + + *head = temp; + return 0; +} + +bool isEmpty(ElementStack* head) { + return head == NULL; +} + +void clear(ElementStack** head) { + while (!isEmpty(*head)) { + popElements(head, NULL); + } +} + +char popElements(ElementStack** head, int* errorCode) { + if (*head == NULL) { + if (errorCode != NULL) { + *errorCode = 1; + } + return -1; + } + + int value = (*head)->value; + + ElementStack* temp = (*head)->next; + free(*head); + *head = temp; + + return value; +} \ No newline at end of file diff --git a/balancedStaples/balancedStaples/stack.h b/balancedStaples/balancedStaples/stack.h new file mode 100644 index 0000000..753d9d1 --- /dev/null +++ b/balancedStaples/balancedStaples/stack.h @@ -0,0 +1,23 @@ +#ifndef STACK_H_ +#define STACK_H_ +#include + +typedef struct ElementStack { + struct ElementStack* next; + char value; +} ElementStack; + +// . 0 , -1 . +int pushElements(ElementStack** head, char value); + +// . +bool isEmpty(ElementStack* head); + +// . +void clear(ElementStack** head); + +// . , +char popElements(ElementStack** head, int* errorCode); + +#endif // !STACK_H_ +