From 31ff36f87ea2620504ed2ca5e8934bc6699f3fd6 Mon Sep 17 00:00:00 2001 From: Stanislav Klimovich Date: Tue, 28 Oct 2025 19:57:20 +0000 Subject: [PATCH 1/3] Sorted list (Task_1) implemented --- 6.Lists/Task_1/Sorted-list | Bin 0 -> 19120 bytes 6.Lists/Task_1/Sorted-list.c | 146 +++++++++++++++++++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100755 6.Lists/Task_1/Sorted-list create mode 100644 6.Lists/Task_1/Sorted-list.c diff --git a/6.Lists/Task_1/Sorted-list b/6.Lists/Task_1/Sorted-list new file mode 100755 index 0000000000000000000000000000000000000000..0fa038f588055607fdadd208dac59b14fc7ce70f GIT binary patch literal 19120 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 +#include + +typedef struct Node { + int value; + struct Node* next; +} Node; + +Node* head = NULL; + +// Функция для вставки значения +void add_value(int value) { + Node* new_node = (Node*)malloc(sizeof(Node)); + new_node->value = value; + new_node->next = NULL; + + if (head == NULL || head->value >= value) { + new_node->next = head; + head = new_node; + return; + } + + Node* current = head; + while (current->next != NULL && current->next->value < value) { + current = current->next; + } + + new_node->next = current->next; + current->next = new_node; +} + +// Функция удаления значения +void remove_value(int value) { + if (head == NULL) { + printf("Список пуст\n"); + return; + } + + Node* temp; + if (head->value == value) { + temp = head; + head = head->next; + free(temp); + printf("Значение %d удалено\n", value); + return; + } + + Node* current = head; + while (current->next != NULL && current->next->value != value) { + current = current->next; + } + + if (current->next == NULL) { + printf("Значение %d не найдено\n", value); + return; + } + + temp = current->next; + current->next = temp->next; + free(temp); + printf("Значение %d удалено\n", value); +} + +void print_list() { + if (head == NULL) { + printf("Список пуст\n"); + return; + } + + Node* current = head; + printf("Список: "); + while (current != NULL) { + printf("%d ", current->value); + current = current->next; + } + printf("\n"); +} + +// Функция освобождения памяти +void free_list() { + Node* temp; + while (head != NULL) { + temp = head; + head = head->next; + free(temp); + } +} + +void clear_input_buffer() { + int c; + while ((c = getchar()) != '\n' && c != EOF) { } +} + +int main() { + int choice, value; + int input_count; + + do { + printf("\nМеню:\n"); + printf("0 - Выйти\n"); + printf("1 - Добавить значение\n"); + printf("2 - Удалить значение\n"); + printf("3 - Распечатать список\n"); + printf("Выбор: "); + + input_count = scanf("%d", &choice); + + if (input_count != 1) { + printf("Ошибка: введите число от 0 до 3\n"); + clear_input_buffer(); + continue; + } + + switch (choice) { + case 0: + free_list(); + printf("Выход\n"); + break; + case 1: + printf("Введите значение для добавления: "); + if (scanf("%d", &value) != 1) { + printf("Ошибка: введите целое число\n"); + clear_input_buffer(); + } else { + add_value(value); + } + break; + case 2: + printf("Введите значение для удаления: "); + if (scanf("%d", &value) != 1) { + printf("Ошибка: введите целое число\n"); + clear_input_buffer(); + } else { + remove_value(value); + } + break; + case 3: + print_list(); + break; + default: + printf("Введите число от 0 до 3\n"); + } + } while (choice != 0); + + return 0; +} \ No newline at end of file From 3bdd64f3ad0607ad10abffe6ecbe715156d8cfa8 Mon Sep 17 00:00:00 2001 From: Stanislav Klimovich Date: Tue, 28 Oct 2025 20:27:35 +0000 Subject: [PATCH 2/3] The counting rhyme has been implemented (Task_2) --- 6.Lists/Task_1/Sorted-list | Bin 19120 -> 0 bytes 6.Lists/Task_2/Counting-rhyme.c | 65 ++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) delete mode 100755 6.Lists/Task_1/Sorted-list create mode 100644 6.Lists/Task_2/Counting-rhyme.c diff --git a/6.Lists/Task_1/Sorted-list b/6.Lists/Task_1/Sorted-list deleted file mode 100755 index 0fa038f588055607fdadd208dac59b14fc7ce70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19120 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 +#include + +typedef struct Node { + int value; + struct Node* next; +} Node; + +int main() { + int n, m; + + printf("Введите количество воинов (n): "); + scanf("%d", &n); + printf("Введите шаг (m): "); + scanf("%d", &m); + + if (n == 1) { + printf("Последний выживший: 1\n"); + return 0; + } + + Node* head = (Node*)malloc(sizeof(Node)); + head->value = 1; + + Node* prev = head; + for (int i = 2; i <= n; i++) { + Node* new_node = (Node*)malloc(sizeof(Node)); + new_node->value = i; + prev->next = new_node; + prev = new_node; + } + prev->next = head; + + Node* current = head; + prev = NULL; + + if (m == 1) { + prev = current; + while (prev->next != head) { + prev = prev->next; + } + } + + int count = n; + + while (count > 1) { + for (int i = 0; i < m - 1; i++) { + prev = current; + current = current->next; + } + + Node* to_delete = current; + prev->next = current->next; + current = current->next; + free(to_delete); + + count--; + } + + printf("Последний выживший: %d\n", current->value); + + free(current); + + return 0; +} \ No newline at end of file From 84eaa3356306ea692cbf9beb5e30e57cfe1f7ae3 Mon Sep 17 00:00:00 2001 From: Stanislav Klimovich Date: Wed, 3 Dec 2025 00:27:17 +0000 Subject: [PATCH 3/3] Added tests for sorting --- 6.Lists/Task_1/Sorted-list.c | 133 ++++++++++++++++++++++++++++++++++- 1 file changed, 132 insertions(+), 1 deletion(-) diff --git a/6.Lists/Task_1/Sorted-list.c b/6.Lists/Task_1/Sorted-list.c index 882b408..32f6809 100644 --- a/6.Lists/Task_1/Sorted-list.c +++ b/6.Lists/Task_1/Sorted-list.c @@ -1,5 +1,7 @@ #include #include +#include +#include typedef struct Node { int value; @@ -91,7 +93,136 @@ void clear_input_buffer() { while ((c = getchar()) != '\n' && c != EOF) { } } -int main() { +// Вспомогательные функции для тестов +int get_size() { + int count = 0; + Node* current = head; + while (current != NULL) { + count++; + current = current->next; + } + return count; +} + +int has_value(int value) { + Node* current = head; + while (current != NULL) { + if (current->value == value) { + return 1; + } + current = current->next; + } + return 0; +} + +void run_tests() { + printf("Базовые тесты:\n"); + + free_list(); + + // Добавление одного элемента + printf("1. Добавление одного элемента:\n"); + add_value(42); + assert(get_size() == 1); + printf("Успешно\n"); + + // Добавление второго элемента + printf("2. Добавление второго элемента:\n"); + add_value(10); + assert(get_size() == 2); + printf("Успешно\n"); + + // Проверка сортировки + printf("3. Проверка сортировки:\n"); + assert(head->value == 10); // 10 должно быть первым + printf("Успешно\n"); + + // Удаление элемента + printf("4. Удаление элемента:\n"); + remove_value(42); + assert(get_size() == 1); + assert(!has_value(42)); // 42 не должно быть в списке + printf("Успешно\n"); + + // Удаление несуществующего элемента + printf("5. Удаление несуществующего элемента: "); + remove_value(999); + assert(get_size() == 1); // Размер не должен измениться + printf("Успешно\n\n"); + + printf("Граничные случаи:\n"); + + free_list(); + + // Пустой список + printf("6. Пустой список:\n"); + assert(get_size() == 0); + printf("Успешно\n"); + + // Удаление из пустого списка + printf("7. Удаление из пустого списка: "); + remove_value(10); + assert(get_size() == 0); + printf("Успешно\n"); + + // Добавление одинаковых значений + printf("8. Добавление одинаковых значений:\n"); + add_value(5); + add_value(5); + add_value(5); + assert(get_size() == 3); + printf("Успешно\n"); + + // Удаление всех элементов + printf("9. Удаление всех элементов:\n"); + remove_value(5); + remove_value(5); + remove_value(5); + assert(get_size() == 0); + printf("Успешно\n\n"); + + printf("Тест сортировки:\n"); + + free_list(); + + printf("10. Проверка сортировки:\n"); + add_value(30); + add_value(10); + add_value(20); + add_value(5); + add_value(25); + + // Должно быть: 5, 10, 20, 25, 30 + assert(get_size() == 5); + + // Простая проверка: первое значение минимальное + assert(head != NULL); + assert(head->value == 5); + + // Проверяем, что значения в порядке возрастания + struct Node* current = head; + int prev = current->value; + current = current->next; + + while (current != NULL) { + assert(current->value >= prev); // Следующее >= предыдущего + prev = current->value; + current = current->next; + } + + printf("Успешно\n"); +} + +int main(int argc, char *argv[]) { + // Проверяем аргументы командной строки + if (argc > 1) { + // Если первый аргумент --test, запускаем тесты + if (strcmp(argv[1], "--test") == 0) { + run_tests(); + return 0; + } + } + int choice, value; int input_count;