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..4fa1a0f
--- /dev/null
+++ b/KR2Number1FirstTry/KR2Number1FirstTry/list.c
@@ -0,0 +1,83 @@
+#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;
+};
+
+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..49099d3
--- /dev/null
+++ b/KR2Number1FirstTry/KR2Number1FirstTry/list.h
@@ -0,0 +1,17 @@
+#pragma once
+#include
+#include
+
+typedef struct List List;
+
+//Insert to list
+int insert(List* list, int value);
+
+//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
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