diff --git a/ConsoleApplication1/ConsoleApplication1/ConsoleApplication1.cpp b/ConsoleApplication1/ConsoleApplication1/ConsoleApplication1.cpp index 9d6500d..f93182c 100644 --- a/ConsoleApplication1/ConsoleApplication1/ConsoleApplication1.cpp +++ b/ConsoleApplication1/ConsoleApplication1/ConsoleApplication1.cpp @@ -1,20 +1,241 @@ -// ConsoleApplication1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы. -// +#define _CRT_SECURE_NO_WARNINGS -#include +#include +#include -int main() -{ - std::cout << "Hello World!\n"; +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 s = 0; + while (ptr != NULL) { + if (ptr->data % 2 == 0) { + s++; + } + ptr = ptr->next; + } + return s; +} +int oddsX10() { + struct Node* ptr = first; + int s = 0; + while (ptr != NULL) { + if (ptr->data % 2 != 0) { + ptr->data = ptr->data * 10; + } + ptr = ptr->next; + } + return s; +} +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 and Index < i) { + if (Index >= 0) { + ptr->data *= 10; + } + ptr = ptr->next; + Index++; + } +} +void main() { + printf("\nTask 1!\n"); + first = NULL; + printList(); + + addToHead(400); + addToHead(300); + addToHead(200); + addToHead(100); + printList(); + + int x1 = deleteFromHead(); + printf("x1 = %d\n", x1); + printList(); + + + printf("contains(100) = %d\n", contains(100)); + printf("contains(150) = %d\n", contains(150)); + printf("contains(200) = %d\n", contains(200)); + + clearList(); + printList(); + + printf("contains(100) = %d\n", contains(100)); + printf("contains(150) = %d\n", contains(150)); + printf("contains(200) = %d\n", contains(200)); + + printf("\nTask 2!\n"); + 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_s("%d", &x); + } + + printf("\nTask 3!\n"); + 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_s("%d", &x); + } + + printf("\nTask 4!\n"); + printList(); + + addToHead(1); + addToHead(3); + addToHead(6); + addToHead(8); + printList(); + + oddsX10(); + printList(); + + clearList(); + { + int x; + scanf("%d", &x); + } + + printf("\nTask 5!\n"); + printList(); + + addToHead(1); + addToHead(3); + addToHead(6); + addToHead(8); + printList(); + + elementIx100(0); + printList(); + + elementIx100(2); + printList(); + + elementIx100(0); + printList(); + + clearList(); + { + int x; + scanf("d", &x); + } + + printf("\nTask 6!\n"); + printList(); + + addToHead(1); + addToHead(3); + addToHead(6); + addToHead(8); + printList(); + + elementLeftIx10(1); + printList(); + + elementLeftIx10(2); + printList(); + + elementLeftIx10(4); + printList(); + + clearList(); + { + int x; + scanf("%d", &x); + } } -// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки" -// Отладка программы: F5 или меню "Отладка" > "Запустить отладку" -// Советы по началу работы -// 1. В окне обозревателя решений можно добавлять файлы и управлять ими. -// 2. В окне Team Explorer можно подключиться к системе управления версиями. -// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения. -// 4. В окне "Список ошибок" можно просматривать ошибки. -// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода. -// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.