From 255ca54f41c2bdcdd23d4cfd3d015550f20eaaa7 Mon Sep 17 00:00:00 2001 From: AZEN-SGG Date: Tue, 20 May 2025 10:28:29 +0300 Subject: [PATCH] Add dist --- 2025.05.23/09Ex/solve.c | 87 +++++++++----------- 2025.05.23/Krivoruchenko_SK.zip | Bin 0 -> 16787 bytes 2025.05.23/dist/Krivoruchenko_SK/Makefile | 6 +- 2025.05.23/dist/Krivoruchenko_SK/io_node.c | 11 +++ 2025.05.23/dist/Krivoruchenko_SK/io_node.h | 1 + 2025.05.23/dist/Krivoruchenko_SK/main_09.c | 67 +++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/main_10.c | 67 +++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/solve_09.c | 73 ++++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/solve_09.h | 8 ++ 2025.05.23/dist/Krivoruchenko_SK/solve_10.c | 56 +++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/solve_10.h | 8 ++ 2025.05.23/tests/file_test.sh | 2 +- 12 files changed, 336 insertions(+), 50 deletions(-) create mode 100644 2025.05.23/Krivoruchenko_SK.zip create mode 100644 2025.05.23/dist/Krivoruchenko_SK/main_09.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/main_10.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_09.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_09.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_10.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_10.h diff --git a/2025.05.23/09Ex/solve.c b/2025.05.23/09Ex/solve.c index eae4baa..3f63269 100644 --- a/2025.05.23/09Ex/solve.c +++ b/2025.05.23/09Ex/solve.c @@ -7,72 +7,67 @@ node * t9_solve (node *head) { - node *last, *curr = head, *next, - *deleted = NULL, *last_cmp; - int cmp; + int cmp_last, cmp_next; + node *last, *curr, *next, + *deleted; + last=next=deleted=NULL; + cmp_last=cmp_next=0; + curr = head; + if (!curr) + return NULL; - next = head->next; - if (!next) - return head; - - cmp = strcmp(curr->string, next->string); - if (cmp >= 0) { - deleted = curr; - - head = next; - curr = next; - next = next->next; - - if (!next) { - delete_node(deleted); - if (cmp == 0) - delete_node(curr); - return NULL; - } - } - - for (next = curr->next; next->next;) + for (next = curr->next; next; next = curr->next) { - last_cmp = curr; - - last = curr; - curr = next; - next = curr->next; - if (deleted) - last_cmp = deleted; + cmp_last = strcmp(curr->string, deleted->string); + else if (!last) + cmp_last = 1; + else + cmp_last = strcmp(curr->string, last->string); + cmp_next = strcmp(curr->string, next->string); // Как происходит обращение в память для структур? - if ( - (strcmp(curr->string, next->string) >= 0) && - (strcmp(curr->string, last_cmp->string) >= 0) - ) { + if ((cmp_last >= 0) && (cmp_next >= 0)) + { if (deleted) delete_node(deleted); deleted = curr; - - last->next = next; - curr = last; - } else { + if (last) { + last->next = next; + curr = last; + } else { + head = next; + curr = NULL; + } + } else + { if (deleted) delete_node(deleted); deleted = NULL; } + last = curr; + curr = next; } if (deleted) - last_cmp = deleted; + cmp_last = strcmp(curr->string, deleted->string); + else if (!last) + cmp_last = 1; else - last_cmp = curr; + cmp_last = strcmp(curr->string, last->string); - if (strcmp(next->string, last_cmp->string) >= 0) { - curr->next = NULL; - - delete_node(next); + if (cmp_last >= 0) + { + delete_node(curr); + if (last) + last->next = NULL; + else + head = NULL; + curr = NULL; } if (deleted) delete_node(deleted); - return head; + return head; } diff --git a/2025.05.23/Krivoruchenko_SK.zip b/2025.05.23/Krivoruchenko_SK.zip new file mode 100644 index 0000000000000000000000000000000000000000..b86b3e67d1d7ee19e9e79344fa4d155838ae990f GIT binary patch literal 16787 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
  • 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 literal 0 HcmV?d00001 diff --git a/2025.05.23/dist/Krivoruchenko_SK/Makefile b/2025.05.23/dist/Krivoruchenko_SK/Makefile index da157db..ac6435e 100644 --- a/2025.05.23/dist/Krivoruchenko_SK/Makefile +++ b/2025.05.23/dist/Krivoruchenko_SK/Makefile @@ -2,17 +2,17 @@ FLAGS = -fstack-protector-all -W -Wall -Wextra -Wunused -Wcast-align -Werror -pe OBJ_COMMON = io_node.o -NUMS = 1 2 3 4 5 6 7 8 9 10 11 12 +NUMS = 1 2 3 4 5 6 7 8 9 10 OUTS = $(foreach n,$(NUMS),$(shell printf "a%02d.out\n" "$(n)")) all: $(OUTS) %.o: %.c - gcc -c $(FLAGS) $< + -gcc -c $(FLAGS) $< a%.out: main_%.o solve_%.o $(OBJ_COMMON) - gcc $(FLAGS) $^ -o $@ -lm + -gcc $(FLAGS) $^ -o $@ -lm clean: rm -f *.o *.out diff --git a/2025.05.23/dist/Krivoruchenko_SK/io_node.c b/2025.05.23/dist/Krivoruchenko_SK/io_node.c index 2a8e254..23652e5 100644 --- a/2025.05.23/dist/Krivoruchenko_SK/io_node.c +++ b/2025.05.23/dist/Krivoruchenko_SK/io_node.c @@ -17,6 +17,17 @@ int get_length (node * head) return i; } +void delete_nodes (node *head, const int count) +{ + for (int i = 0; i < count; ++i) + { + node *temp = head; + head = head->next; + + delete_node(temp); + } +} + void delete_list (node * head) { node *curr, *next; diff --git a/2025.05.23/dist/Krivoruchenko_SK/io_node.h b/2025.05.23/dist/Krivoruchenko_SK/io_node.h index e4b5399..db51796 100644 --- a/2025.05.23/dist/Krivoruchenko_SK/io_node.h +++ b/2025.05.23/dist/Krivoruchenko_SK/io_node.h @@ -13,6 +13,7 @@ static inline void delete_node (node *head) } int get_length (node *head); +void delete_nodes (node *head, const int count); void delete_list (node *head); io_status read_list (node **list, const char *filename); void print_list (node *head, const int p); diff --git a/2025.05.23/dist/Krivoruchenko_SK/main_09.c b/2025.05.23/dist/Krivoruchenko_SK/main_09.c new file mode 100644 index 0000000..d93e44e --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/main_09.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "solve_09.h" +#include "node.h" +#include "io_node.h" +#include "status.h" + +/* ./a09.out p filename */ +int main (int argc, char *argv[]) +{ + node *head; + char *name; + double t; + int p, len, task = 9; + io_status ret; + + if ( + !((argc == 3) && + sscanf(argv[1], "%d", &p) == 1 && + argv[2]) + ) { + fprintf(stderr, "Usage: %s p filename\n", argv[0]); + return -1; + } + + name = argv[2]; + + ret = read_list(&head, name); + do { + switch (ret) { + case SUCCESS: + continue; + case ERR_OPEN: + fprintf (stderr, "%s '%s'!\n", ERR_MSG_OPEN, name); + break; + case ERR_READ: + fprintf (stderr, "%s '%s'!\n", ERR_MSG_READ, name); + break; + case ERR_MEM: + fprintf (stderr, "%s!\n", ERR_MSG_MEM); + break; + } + + delete_list(head); + return -2; + } while (0); + + fprintf (stdout, "Source list:\n"); + print_list(head, p); + + t = clock(); + head = t9_solve(head); + t = (clock() - t) / CLOCKS_PER_SEC; + + fprintf (stdout, "\nFinal list:\n"); + print_list(head, p); + len = get_length(head); + + delete_list(head); + + fprintf (stdout, "%s : Task = %d Length = %d Elapsed = %.2f\n", argv[0], task, len, t); + return 0; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/main_10.c b/2025.05.23/dist/Krivoruchenko_SK/main_10.c new file mode 100644 index 0000000..11646f0 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/main_10.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "solve_10.h" +#include "node.h" +#include "io_node.h" +#include "status.h" + +/* ./a10.out p filename */ +int main (int argc, char *argv[]) +{ + node *head; + char *name; + double t; + int p, len, task = 10; + io_status ret; + + if ( + !((argc == 3) && + sscanf(argv[1], "%d", &p) == 1 && + argv[2]) + ) { + fprintf(stderr, "Usage: %s p filename\n", argv[0]); + return -1; + } + + name = argv[2]; + + ret = read_list(&head, name); + do { + switch (ret) { + case SUCCESS: + continue; + case ERR_OPEN: + fprintf (stderr, "%s '%s'!\n", ERR_MSG_OPEN, name); + break; + case ERR_READ: + fprintf (stderr, "%s '%s'!\n", ERR_MSG_READ, name); + break; + case ERR_MEM: + fprintf (stderr, "%s!\n", ERR_MSG_MEM); + break; + } + + delete_list(head); + return -2; + } while (0); + + fprintf (stdout, "Source list:\n"); + print_list(head, p); + + t = clock(); + head = t10_solve(head); + t = (clock() - t) / CLOCKS_PER_SEC; + + fprintf (stdout, "\nFinal list:\n"); + print_list(head, p); + len = get_length(head); + + delete_list(head); + + fprintf (stdout, "%s : Task = %d Length = %d Elapsed = %.2f\n", argv[0], task, len, t); + return 0; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_09.c b/2025.05.23/dist/Krivoruchenko_SK/solve_09.c new file mode 100644 index 0000000..ffb3bdc --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_09.c @@ -0,0 +1,73 @@ +#include "solve_09.h" +#include "node.h" +#include "io_node.h" + +#include +#include + +node * t9_solve (node *head) +{ + int cmp_last, cmp_next; + node *last, *curr, *next, + *deleted; + last=next=deleted=NULL; + cmp_last=cmp_next=0; + curr = head; + if (!curr) + return NULL; + + for (next = curr->next; next; next = curr->next) + { + if (deleted) + cmp_last = strcmp(curr->string, deleted->string); + else if (!last) + cmp_last = 1; + else + cmp_last = strcmp(curr->string, last->string); + cmp_next = strcmp(curr->string, next->string); // Как происходит обращение в память для структур? + + if ((cmp_last >= 0) && (cmp_next >= 0)) + { + if (deleted) + delete_node(deleted); + deleted = curr; + if (last) { + last->next = next; + curr = last; + } else { + head = next; + curr = NULL; + } + } else + { + if (deleted) + delete_node(deleted); + deleted = NULL; + } + last = curr; + curr = next; + } + + if (deleted) + cmp_last = strcmp(curr->string, deleted->string); + else if (!last) + cmp_last = 1; + else + cmp_last = strcmp(curr->string, last->string); + + if (cmp_last >= 0) + { + delete_node(curr); + if (last) + last->next = NULL; + else + head = NULL; + curr = NULL; + } + + if (deleted) + delete_node(deleted); + + return head; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_09.h b/2025.05.23/dist/Krivoruchenko_SK/solve_09.h new file mode 100644 index 0000000..30a5df5 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_09.h @@ -0,0 +1,8 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include "node.h" + +node * t9_solve (node *head); + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_10.c b/2025.05.23/dist/Krivoruchenko_SK/solve_10.c new file mode 100644 index 0000000..51f60e7 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_10.c @@ -0,0 +1,56 @@ +#include "solve_10.h" +#include "node.h" +#include "io_node.h" + +#include +#include + +node * t10_solve (node *head) +{ + int down = 0; + node *last, *curr, *next, + *start; + last=next=start=NULL; + curr = head; + + for (next=curr->next; next; next=curr->next) + { + if (strcmp(next->string, curr->string) <= 0) { + if (!down) + start = last; + down++; + } else { + if (down) { + if (start) { + delete_nodes(start->next, down+1); + start->next = next; + last = start; + } else { + delete_nodes(head, down+1); + head = next; + last = NULL; + } + curr = NULL; + } + down = 0; + } + + last = curr; + curr = next; + } + + if (down) { + if (start) { + delete_nodes(start->next, down+1); + start->next = NULL; + } else { + delete_nodes(head, down+1); + head = NULL; + } + curr = NULL; + last = NULL; + } + + return head; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_10.h b/2025.05.23/dist/Krivoruchenko_SK/solve_10.h new file mode 100644 index 0000000..f080366 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_10.h @@ -0,0 +1,8 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include "node.h" + +node * t10_solve (node *head); + +#endif diff --git a/2025.05.23/tests/file_test.sh b/2025.05.23/tests/file_test.sh index cc0e05c..46415df 100755 --- a/2025.05.23/tests/file_test.sh +++ b/2025.05.23/tests/file_test.sh @@ -19,7 +19,7 @@ rm -f "$outlog" "$errlog" echo "Тест запущен..." -for npr in {1..7} ; do +for npr in {1..10} ; do num=$(printf "%02d" "$npr") prog="a$num.out" if [ -f $prog ]; then