diff --git a/lab20/1.c b/lab20/1.c new file mode 100644 index 0000000..b932203 --- /dev/null +++ b/lab20/1.c @@ -0,0 +1,274 @@ +#define _CRT_SECURE_NO_WARNINGS + +#include +#include + +struct Node +{ + int data; + struct Node* next; +}; + +struct Node* first = NULL; + +void printList() +{ + struct Node* ptr = first; + while (ptr != NULL) + { + printf("(%d)->", ptr->data); + ptr = ptr->next; + } + printf("NULL\n"); +} +void addToHead(int value) +{ + struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); + + newNode->next = first; + newNode->data = value; + + first = newNode; +} +int deleteFromHead() +{ + int value = first->data; + struct Node* delNode = first; + first = first->next; + free(delNode); + return value; +} +int contains(int value) +{ + struct Node* ptr = first; + while (ptr != NULL) + { + if (ptr->data == value) + { + return 1; + } + ptr = ptr->next; + } + return 0; +} +void clearList() +{ + while (first != NULL) + { + struct Node* delNode = first; + first = first->next; + free(delNode); + } +} +int sum() +{ + struct Node* ptr = first; + int s = 0; + while (ptr != NULL) + { + s += ptr->data; + ptr = ptr->next; + } + return s; +} +int evenCount() +{ + struct Node* ptr = first; + int count = 0; + while (ptr != NULL) + { + if (ptr->data % 2 == 0) + { + count++; + } + ptr = ptr->next; + } + return count; +} +void oddsX10() +{ + struct Node* ptr = first; + while (ptr != NULL) + { + if (ptr->data % 2 != 0) + { + ptr->data = ptr->data * 10; + } + ptr = ptr->next; + } +} +void elementIx100(int i) +{ + struct Node* ptr = first; + int index = 0; + while (ptr != NULL) + { + if (index == i) + { + ptr->data = ptr->data * 100; + return; + } + ptr = ptr->next; + index++; + } +} +void elementLeftIx10(int i) +{ + struct Node* ptr = first; + int index = 0; + while (ptr != NULL) + { + if (index < i) + { + ptr->data = ptr->data * 10; + } + index++; + ptr = ptr->next; + } +} +void Task1() +{ + printList(); + addToHead(400); + addToHead(300); + addToHead(200); + addToHead(100); + printList(); + + printf("contains(100) = %d\n", contains(100)); + printf("contains(100) = %d\n", contains(150)); + printf("contains(100) = %d\n", contains(200)); + + clearList(); + printList(); + + printf("contains(100) = %d\n", contains(100)); + printf("contains(100) = %d\n", contains(150)); + printf("contains(100) = %d\n", contains(200)); + { + int x; + scanf("%d", &x); + } +} +void Task2() +{ + printList(); + addToHead(1); + addToHead(3); + addToHead(6); + addToHead(9); + printList(); + + printf("sum = %d\n", sum()); + + clearList(); + printList(); + printf("sum = %d\n", sum()); + { + int x; + scanf("%d", &x); + } +} +void Task3() +{ + printList(); + + addToHead(1); + addToHead(3); + addToHead(6); + addToHead(8); + printList(); + + printf("even numbers = %d\n", evenCount()); + + clearList(); + printList(); + printf("even numbers = %d\n", evenCount()); + { + int x; + scanf("%d", &x); + } +} +void Task4() +{ + printList(); + + addToHead(1); + addToHead(3); + addToHead(6); + addToHead(8); + printList(); + + oddsX10(); + printList(); + + clearList(); + printList(); + { + int x; + scanf("%d", &x); + } +} +void Task5() +{ + printList(); + + addToHead(1); + addToHead(3); + addToHead(6); + addToHead(8); + printList(); + + elementIx100(0); + printList(); + + elementIx100(2); + printList(); + + elementIx100(0); + printList(); + + { + int x; + scanf("%d", &x); + } +} +void Task6() +{ + printList(); + + addToHead(1); + addToHead(3); + addToHead(6); + addToHead(8); + printList(); + + elementLeftIx10(1); + printList(); + + elementLeftIx10(2); + printList(); + + elementLeftIx10(4); + printList(); + { + int x; + scanf("%d", &x); + } +} +void main() +{ + first = NULL; + + Task1(); + clearList(); + Task2(); + clearList(); + Task3(); + clearList(); + Task4(); + clearList(); + Task5(); + clearList(); + Task6(); +} \ No newline at end of file diff --git a/lab20/lab20.vcxproj b/lab20/lab20.vcxproj new file mode 100644 index 0000000..197b63d --- /dev/null +++ b/lab20/lab20.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {e513d67f-6aa6-4cba-b0ba-c7d78c09cdea} + lab20 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _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/lab20/lab20.vcxproj.filters b/lab20/lab20.vcxproj.filters new file mode 100644 index 0000000..610b4f4 --- /dev/null +++ b/lab20/lab20.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {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