From 35fd6fccca51e032018ad60432c218509c7fa7ac Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 23 Nov 2022 16:28:33 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=BC=D0=B5=D1=82=D1=80=D0=B8=D1=87=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5,=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KR2Number1FirstTry/KR2Number1FirstTry.sln | 31 ++++ .../KR2Number1FirstTry.vcxproj | 154 ++++++++++++++++++ .../KR2Number1FirstTry.vcxproj.filters | 35 ++++ KR2Number1FirstTry/KR2Number1FirstTry/list.c | 87 ++++++++++ KR2Number1FirstTry/KR2Number1FirstTry/list.h | 16 ++ KR2Number1FirstTry/KR2Number1FirstTry/main.c | 54 ++++++ .../KR2Number1FirstTry/test.txt | 1 + 7 files changed, 378 insertions(+) create mode 100644 KR2Number1FirstTry/KR2Number1FirstTry.sln create mode 100644 KR2Number1FirstTry/KR2Number1FirstTry/KR2Number1FirstTry.vcxproj create mode 100644 KR2Number1FirstTry/KR2Number1FirstTry/KR2Number1FirstTry.vcxproj.filters create mode 100644 KR2Number1FirstTry/KR2Number1FirstTry/list.c create mode 100644 KR2Number1FirstTry/KR2Number1FirstTry/list.h create mode 100644 KR2Number1FirstTry/KR2Number1FirstTry/main.c create mode 100644 KR2Number1FirstTry/KR2Number1FirstTry/test.txt diff --git a/KR2Number1FirstTry/KR2Number1FirstTry.sln b/KR2Number1FirstTry/KR2Number1FirstTry.sln new file mode 100644 index 0000000..e287f5a --- /dev/null +++ b/KR2Number1FirstTry/KR2Number1FirstTry.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}") = "KR2Number1FirstTry", "KR2Number1FirstTry\KR2Number1FirstTry.vcxproj", "{1B9DD3DF-DBE1-4D21-B663-3B38FFCE4061}" +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 + {1B9DD3DF-DBE1-4D21-B663-3B38FFCE4061}.Debug|x64.ActiveCfg = Debug|x64 + {1B9DD3DF-DBE1-4D21-B663-3B38FFCE4061}.Debug|x64.Build.0 = Debug|x64 + {1B9DD3DF-DBE1-4D21-B663-3B38FFCE4061}.Debug|x86.ActiveCfg = Debug|Win32 + {1B9DD3DF-DBE1-4D21-B663-3B38FFCE4061}.Debug|x86.Build.0 = Debug|Win32 + {1B9DD3DF-DBE1-4D21-B663-3B38FFCE4061}.Release|x64.ActiveCfg = Release|x64 + {1B9DD3DF-DBE1-4D21-B663-3B38FFCE4061}.Release|x64.Build.0 = Release|x64 + {1B9DD3DF-DBE1-4D21-B663-3B38FFCE4061}.Release|x86.ActiveCfg = Release|Win32 + {1B9DD3DF-DBE1-4D21-B663-3B38FFCE4061}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {522076BB-2443-4BBD-8928-D20A33E57B17} + EndGlobalSection +EndGlobal diff --git a/KR2Number1FirstTry/KR2Number1FirstTry/KR2Number1FirstTry.vcxproj b/KR2Number1FirstTry/KR2Number1FirstTry/KR2Number1FirstTry.vcxproj new file mode 100644 index 0000000..1fd81d8 --- /dev/null +++ b/KR2Number1FirstTry/KR2Number1FirstTry/KR2Number1FirstTry.vcxproj @@ -0,0 +1,154 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {1b9dd3df-dbe1-4d21-b663-3b38ffce4061} + KR2Number1FirstTry + 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/KR2Number1FirstTry/KR2Number1FirstTry/KR2Number1FirstTry.vcxproj.filters b/KR2Number1FirstTry/KR2Number1FirstTry/KR2Number1FirstTry.vcxproj.filters new file mode 100644 index 0000000..5521f9d --- /dev/null +++ b/KR2Number1FirstTry/KR2Number1FirstTry/KR2Number1FirstTry.vcxproj.filters @@ -0,0 +1,35 @@ + + + + + {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/KR2Number1FirstTry/KR2Number1FirstTry/list.c b/KR2Number1FirstTry/KR2Number1FirstTry/list.c new file mode 100644 index 0000000..f0fdb62 --- /dev/null +++ b/KR2Number1FirstTry/KR2Number1FirstTry/list.c @@ -0,0 +1,87 @@ +#include "list.h" +#include +#include + +typedef struct Node { + int value; + struct Node* next; + struct Node* prev; +} Node; + +struct List { + struct Node* head; + struct Node* tail; +}; + +bool isEmpty(List* list) { + return list->head == NULL; +} + +int insert(List* list, int value) { + if (list->head == NULL) { + Node* temp = calloc(1, sizeof(Node)); + if (temp == NULL) { + return -1; + } + list->head = temp; + list->tail = temp; + temp->next = temp; + temp->prev = temp; + temp->value = value; + return 0; + } + + Node* walker = list->head; + while (walker->next != list->head) { + walker = walker->next; + } + Node* temp = calloc(1, sizeof(Node)); + if (temp == NULL) { + return -1; + } + temp->value = value; + list->tail = temp; + walker->next = temp; + temp->prev = walker; + temp->next = list->head; + return 0; +} + +void clearList(List* list) { + if (list->head == NULL) { + free(list); + return; + } + while (list->head != list->tail) { + Node* walker = list->head; + while (walker != list->tail) { + walker = walker->next; + } + list->tail = walker->prev; + free(walker); + walker = NULL; + } + free(list->head); + free(list); +} + +List* createList(void) { + List* list = calloc(1, sizeof(List)); + return list; +} + +int isSymmetricalList(List* list) { + if (list == NULL || list->head == list->tail) { + return 1; + } + Node* walkerHead = list->head; + Node* walkerTail = list->tail; + while (walkerTail != list->head && walkerHead != list->tail) { + if (walkerTail->value != walkerHead->value) { + return 0; + } + walkerHead = walkerHead->next; + walkerTail = walkerTail->prev; + } + return 1; +} \ No newline at end of file diff --git a/KR2Number1FirstTry/KR2Number1FirstTry/list.h b/KR2Number1FirstTry/KR2Number1FirstTry/list.h new file mode 100644 index 0000000..11996c1 --- /dev/null +++ b/KR2Number1FirstTry/KR2Number1FirstTry/list.h @@ -0,0 +1,16 @@ +#pragma once +#include +#include + +typedef struct List List; + +//Insert to list +int insert(List* list, int value); + +bool isEmpty(List* list); + +void clearList(List* list); + +List* createList(void); + +int isSymmetricalList(List* list); \ No newline at end of file diff --git a/KR2Number1FirstTry/KR2Number1FirstTry/main.c b/KR2Number1FirstTry/KR2Number1FirstTry/main.c new file mode 100644 index 0000000..661038f --- /dev/null +++ b/KR2Number1FirstTry/KR2Number1FirstTry/main.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include "list.h" + +int workWithFile(char fileName[]) { + FILE* file = fopen(fileName, "r"); + if (file == NULL) { + printf("File not found!"); + return -2; + } + int number = 0; + List* list = createList(); + while (fscanf(file, "%d", &number) > 0) { + if (insert(list, number) == -1) { + return -2; + } + } + int result = isSymmetricalList(list); + clearList(list); + return result; +} + +bool test() { + int result = workWithFile("test.txt"); + return result == 1; +} + +int main() { + if (test()) { + printf("Tests correct\n"); + } else { + printf("Tests incorrect\n"); + return -1; + } + char fileName[101] = { '\0' }; + printf("Input fileName, maximum of 100 characters\n"); + int checkScanf = scanf("%s", fileName); + while (checkScanf != 1) { + while (getchar() != '\n') { + } + printf("Error...\n"); + checkScanf = scanf("%s", &fileName); + } + int result = workWithFile(fileName); + if (result == -2) { + printf("Error...\n"); + return -1; + } else if (result == 1) { + printf("List symmetrical\n"); + } else { + printf("List not symmetrical\n"); + } +} \ No newline at end of file diff --git a/KR2Number1FirstTry/KR2Number1FirstTry/test.txt b/KR2Number1FirstTry/KR2Number1FirstTry/test.txt new file mode 100644 index 0000000..8c6995e --- /dev/null +++ b/KR2Number1FirstTry/KR2Number1FirstTry/test.txt @@ -0,0 +1 @@ +10 12 10 \ No newline at end of file From e930689f83a87b50d51528c51cff7177c01b0266 Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 23 Nov 2022 16:30:26 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=84?= =?UTF-8?q?=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KR2Number1FirstTry/KR2Number1FirstTry/list.c | 4 ---- KR2Number1FirstTry/KR2Number1FirstTry/list.h | 5 +++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/KR2Number1FirstTry/KR2Number1FirstTry/list.c b/KR2Number1FirstTry/KR2Number1FirstTry/list.c index f0fdb62..4fa1a0f 100644 --- a/KR2Number1FirstTry/KR2Number1FirstTry/list.c +++ b/KR2Number1FirstTry/KR2Number1FirstTry/list.c @@ -13,10 +13,6 @@ struct List { struct Node* tail; }; -bool isEmpty(List* list) { - return list->head == NULL; -} - int insert(List* list, int value) { if (list->head == NULL) { Node* temp = calloc(1, sizeof(Node)); diff --git a/KR2Number1FirstTry/KR2Number1FirstTry/list.h b/KR2Number1FirstTry/KR2Number1FirstTry/list.h index 11996c1..49099d3 100644 --- a/KR2Number1FirstTry/KR2Number1FirstTry/list.h +++ b/KR2Number1FirstTry/KR2Number1FirstTry/list.h @@ -7,10 +7,11 @@ typedef struct List List; //Insert to list int insert(List* list, int value); -bool isEmpty(List* list); - +//Clear list void clearList(List* list); +//Create new list List* createList(void); +//Check is symmetrical list int isSymmetricalList(List* list); \ No newline at end of file