From 50e9bb6d59d0f74dec912fd52612ff0b7fa676b6 Mon Sep 17 00:00:00 2001 From: AZEN-SGG Date: Mon, 19 May 2025 20:33:04 +0300 Subject: [PATCH] Add dist and change make_dist --- 2025.05.23/dist/Krivoruchenko_SK/Makefile | 18 +++++ 2025.05.23/dist/Krivoruchenko_SK/io_node.c | 85 +++++++++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/io_node.h | 20 +++++ 2025.05.23/dist/Krivoruchenko_SK/main_01.c | 67 ++++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/main_02.c | 67 ++++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/main_03.c | 67 ++++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/main_04.c | 67 ++++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/main_05.c | 67 ++++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/main_06.c | 67 ++++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/main_07.c | 67 ++++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/main_08.c | 67 ++++++++++++++++ 2025.05.23/dist/Krivoruchenko_SK/node.h | 14 ++++ 2025.05.23/dist/Krivoruchenko_SK/solve_01.c | 23 ++++++ 2025.05.23/dist/Krivoruchenko_SK/solve_01.h | 8 ++ 2025.05.23/dist/Krivoruchenko_SK/solve_02.c | 20 +++++ 2025.05.23/dist/Krivoruchenko_SK/solve_02.h | 8 ++ 2025.05.23/dist/Krivoruchenko_SK/solve_03.c | 32 ++++++++ 2025.05.23/dist/Krivoruchenko_SK/solve_03.h | 8 ++ 2025.05.23/dist/Krivoruchenko_SK/solve_04.c | 40 ++++++++++ 2025.05.23/dist/Krivoruchenko_SK/solve_04.h | 8 ++ 2025.05.23/dist/Krivoruchenko_SK/solve_05.c | 27 +++++++ 2025.05.23/dist/Krivoruchenko_SK/solve_05.h | 8 ++ 2025.05.23/dist/Krivoruchenko_SK/solve_06.c | 20 +++++ 2025.05.23/dist/Krivoruchenko_SK/solve_06.h | 8 ++ 2025.05.23/dist/Krivoruchenko_SK/solve_07.c | 28 +++++++ 2025.05.23/dist/Krivoruchenko_SK/solve_07.h | 8 ++ 2025.05.23/dist/Krivoruchenko_SK/solve_08.c | 42 ++++++++++ 2025.05.23/dist/Krivoruchenko_SK/solve_08.h | 8 ++ 2025.05.23/dist/Krivoruchenko_SK/status.h | 16 ++++ scripts/fix-makefiles.sh | 0 scripts/make_dist.sh | 12 ++- 31 files changed, 996 insertions(+), 1 deletion(-) create mode 100644 2025.05.23/dist/Krivoruchenko_SK/Makefile create mode 100644 2025.05.23/dist/Krivoruchenko_SK/io_node.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/io_node.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/main_01.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/main_02.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/main_03.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/main_04.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/main_05.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/main_06.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/main_07.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/main_08.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/node.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_01.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_01.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_02.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_02.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_03.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_03.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_04.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_04.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_05.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_05.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_06.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_06.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_07.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_07.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_08.c create mode 100644 2025.05.23/dist/Krivoruchenko_SK/solve_08.h create mode 100644 2025.05.23/dist/Krivoruchenko_SK/status.h mode change 100644 => 100755 scripts/fix-makefiles.sh mode change 100644 => 100755 scripts/make_dist.sh diff --git a/2025.05.23/dist/Krivoruchenko_SK/Makefile b/2025.05.23/dist/Krivoruchenko_SK/Makefile new file mode 100644 index 0000000..da157db --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/Makefile @@ -0,0 +1,18 @@ +FLAGS = -fstack-protector-all -W -Wall -Wextra -Wunused -Wcast-align -Werror -pedantic -pedantic-errors -Wfloat-equal -Wpointer-arith -Wformat-security -Wmissing-format-attribute -Wformat=1 -Wwrite-strings -Wcast-align -Wno-long-long -std=gnu99 -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wdeclaration-after-statement -Wbad-function-cast -Wnested-externs -O3 + +OBJ_COMMON = io_node.o + +NUMS = 1 2 3 4 5 6 7 8 9 10 11 12 + +OUTS = $(foreach n,$(NUMS),$(shell printf "a%02d.out\n" "$(n)")) + +all: $(OUTS) + +%.o: %.c + gcc -c $(FLAGS) $< + +a%.out: main_%.o solve_%.o $(OBJ_COMMON) + 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 new file mode 100644 index 0000000..2a8e254 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/io_node.c @@ -0,0 +1,85 @@ +#include "io_node.h" +#include "node.h" +#include "status.h" + +#include +#include +#include + +int get_length (node * head) +{ + node *curr; + + int i = 0; + for (curr = head; curr; curr=curr->next) + i++; + + return i; +} + +void delete_list (node * head) +{ + node *curr, *next; + for (curr = head; curr; curr = next) { + next = curr->next; + delete_node(curr); + } +} + +io_status read_list (node **list, const char *filename) +{ + FILE *fp = 0; + char *string, buf[LEN_STR]; + node *head, *lunit, *unit; + + head = lunit = unit = NULL; + + if (!(fp = fopen(filename, "r"))) + return ERR_OPEN; + + while (fgets(buf, LEN_STR, fp)) + { + unit = (node *)malloc(sizeof(node)); + if (!unit) { + fclose(fp); + delete_list(head); + + return ERR_MEM; + } + + unit->next = NULL; + + buf[strcspn(buf, "\n")] = '\0'; + string = strdup(buf); + if (!string) { + fclose(fp); + free(unit); + delete_list(head); + + return ERR_MEM; + } + + unit->string = string; + if (!lunit) + head = unit; + else + lunit->next = unit; + + lunit = unit; + } + + if (!head) + return ERR_READ; + + *list = head; + + fclose(fp); + return SUCCESS; +} + +void print_list (node *head, const int p) +{ + for (int i = 0; head && i < p; head = head->next, i++) + printf("%s\n", head->string); +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/io_node.h b/2025.05.23/dist/Krivoruchenko_SK/io_node.h new file mode 100644 index 0000000..e4b5399 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/io_node.h @@ -0,0 +1,20 @@ +#ifndef IO_NODE_H +#define IO_NODE_H + +#include "node.h" +#include "status.h" + +#include + +static inline void delete_node (node *head) +{ + free(head->string); + free(head); +} + +int get_length (node *head); +void delete_list (node *head); +io_status read_list (node **list, const char *filename); +void print_list (node *head, const int p); + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/main_01.c b/2025.05.23/dist/Krivoruchenko_SK/main_01.c new file mode 100644 index 0000000..46f346d --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/main_01.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "solve_01.h" +#include "node.h" +#include "io_node.h" +#include "status.h" + +/* ./a01.out p filename */ +int main (int argc, char *argv[]) +{ + node *head; + char *name; + double t; + int p, res, task = 1; + 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); + + print_list(head, p); + + t = clock(); + res = t1_solve(head); + t = (clock() - t) / CLOCKS_PER_SEC; + + delete_list(head); + + if (res < 0) { + fprintf (stderr, "%s : Task = %d Undefined error Elapsed = %.2f\n", argv[0], task, t); + return -3; + } else { + fprintf (stdout, "%s : Task = %d Result = %d Elapsed = %.2f\n", argv[0], task, res, t); + return 0; + } +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/main_02.c b/2025.05.23/dist/Krivoruchenko_SK/main_02.c new file mode 100644 index 0000000..acf6362 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/main_02.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "solve_02.h" +#include "node.h" +#include "io_node.h" +#include "status.h" + +/* ./a02.out p filename */ +int main (int argc, char *argv[]) +{ + node *head; + char *name; + double t; + int p, res, task = 2; + 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); + + print_list(head, p); + + t = clock(); + res = t2_solve(head); + t = (clock() - t) / CLOCKS_PER_SEC; + + delete_list(head); + + if (res < 0) { + fprintf (stderr, "%s : Task = %d Undefined error Elapsed = %.2f\n", argv[0], task, t); + return -3; + } else { + fprintf (stdout, "%s : Task = %d Result = %d Elapsed = %.2f\n", argv[0], task, res, t); + return 0; + } +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/main_03.c b/2025.05.23/dist/Krivoruchenko_SK/main_03.c new file mode 100644 index 0000000..d7923ca --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/main_03.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "solve_03.h" +#include "node.h" +#include "io_node.h" +#include "status.h" + +/* ./a03.out p filename */ +int main (int argc, char *argv[]) +{ + node *head; + char *name; + double t; + int p, res, task = 3; + 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); + + print_list(head, p); + + t = clock(); + res = t3_solve(head); + t = (clock() - t) / CLOCKS_PER_SEC; + + delete_list(head); + + if (res < 0) { + fprintf (stderr, "%s : Task = %d Undefined error Elapsed = %.2f\n", argv[0], task, t); + return -3; + } else { + fprintf (stdout, "%s : Task = %d Result = %d Elapsed = %.2f\n", argv[0], task, res, t); + return 0; + } +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/main_04.c b/2025.05.23/dist/Krivoruchenko_SK/main_04.c new file mode 100644 index 0000000..594d802 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/main_04.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "solve_04.h" +#include "node.h" +#include "io_node.h" +#include "status.h" + +/* ./a04.out p filename */ +int main (int argc, char *argv[]) +{ + node *head; + char *name; + double t; + int p, res, task = 4; + 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); + + print_list(head, p); + + t = clock(); + res = t4_solve(head); + t = (clock() - t) / CLOCKS_PER_SEC; + + delete_list(head); + + if (res < 0) { + fprintf (stderr, "%s : Task = %d Undefined error Elapsed = %.2f\n", argv[0], task, t); + return -3; + } else { + fprintf (stdout, "%s : Task = %d Result = %d Elapsed = %.2f\n", argv[0], task, res, t); + return 0; + } +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/main_05.c b/2025.05.23/dist/Krivoruchenko_SK/main_05.c new file mode 100644 index 0000000..77c9d14 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/main_05.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "solve_05.h" +#include "node.h" +#include "io_node.h" +#include "status.h" + +/* ./a05.out p filename */ +int main (int argc, char *argv[]) +{ + node *head; + char *name; + double t; + int p, res, task = 5; + 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); + + print_list(head, p); + + t = clock(); + res = t5_solve(head); + t = (clock() - t) / CLOCKS_PER_SEC; + + delete_list(head); + + if (res < 0) { + fprintf (stderr, "%s : Task = %d Undefined error Elapsed = %.2f\n", argv[0], task, t); + return -3; + } else { + fprintf (stdout, "%s : Task = %d Result = %d Elapsed = %.2f\n", argv[0], task, res, t); + return 0; + } +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/main_06.c b/2025.05.23/dist/Krivoruchenko_SK/main_06.c new file mode 100644 index 0000000..a1b96ed --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/main_06.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "solve_06.h" +#include "node.h" +#include "io_node.h" +#include "status.h" + +/* ./a06.out p filename */ +int main (int argc, char *argv[]) +{ + node *head; + char *name; + double t; + int p, res, task = 6; + 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); + + print_list(head, p); + + t = clock(); + res = t6_solve(head); + t = (clock() - t) / CLOCKS_PER_SEC; + + delete_list(head); + + if (res < 0) { + fprintf (stderr, "%s : Task = %d Undefined error Elapsed = %.2f\n", argv[0], task, t); + return -3; + } else { + fprintf (stdout, "%s : Task = %d Result = %d Elapsed = %.2f\n", argv[0], task, res, t); + return 0; + } +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/main_07.c b/2025.05.23/dist/Krivoruchenko_SK/main_07.c new file mode 100644 index 0000000..3748a3b --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/main_07.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "solve_07.h" +#include "node.h" +#include "io_node.h" +#include "status.h" + +/* ./a07.out p filename */ +int main (int argc, char *argv[]) +{ + node *head; + char *name; + double t; + int p, res, task = 7; + 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); + + print_list(head, p); + + t = clock(); + res = t7_solve(head); + t = (clock() - t) / CLOCKS_PER_SEC; + + delete_list(head); + + if (res < 0) { + fprintf (stderr, "%s : Task = %d Undefined error Elapsed = %.2f\n", argv[0], task, t); + return -3; + } else { + fprintf (stdout, "%s : Task = %d Result = %d Elapsed = %.2f\n", argv[0], task, res, t); + return 0; + } +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/main_08.c b/2025.05.23/dist/Krivoruchenko_SK/main_08.c new file mode 100644 index 0000000..0f27f1c --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/main_08.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "solve_08.h" +#include "node.h" +#include "io_node.h" +#include "status.h" + +/* ./a08.out p filename */ +int main (int argc, char *argv[]) +{ + node *head; + char *name; + double t; + int p, len, task = 8; + 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 = t8_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/node.h b/2025.05.23/dist/Krivoruchenko_SK/node.h new file mode 100644 index 0000000..18cff38 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/node.h @@ -0,0 +1,14 @@ +#ifndef NODE_H +#define NODE_H + +#define LEN_STR 1234 + +struct _node; + +typedef struct _node +{ + char *string; + struct _node *next; +} node; + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_01.c b/2025.05.23/dist/Krivoruchenko_SK/solve_01.c new file mode 100644 index 0000000..1071e91 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_01.c @@ -0,0 +1,23 @@ +#include "solve_01.h" +#include "node.h" + +#include + +int t1_solve (node *head) +{ + char *maximum = head->string; + int count = 1; + + for (head = head->next; head; head = head->next) + { + int cmp = strcmp(head->string, maximum); + if (cmp > 0) { + maximum = head->string; + count = 1; + } else if (!cmp) + count++; + } + + return count; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_01.h b/2025.05.23/dist/Krivoruchenko_SK/solve_01.h new file mode 100644 index 0000000..69742a9 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_01.h @@ -0,0 +1,8 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include "node.h" + +int t1_solve (node *head); + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_02.c b/2025.05.23/dist/Krivoruchenko_SK/solve_02.c new file mode 100644 index 0000000..60ed5e8 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_02.c @@ -0,0 +1,20 @@ +#include "solve_02.h" +#include "node.h" + +#include + +int t2_solve (node *head) +{ + char *last = head->string; + int count = 1; + + for (head = head->next; head; head = head->next) + { + if (strcmp(head->string, last) > 0) + count++; + last = head->string; + } + + return count; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_02.h b/2025.05.23/dist/Krivoruchenko_SK/solve_02.h new file mode 100644 index 0000000..8cd007e --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_02.h @@ -0,0 +1,8 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include "node.h" + +int t2_solve (node *head); + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_03.c b/2025.05.23/dist/Krivoruchenko_SK/solve_03.c new file mode 100644 index 0000000..cd67edb --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_03.c @@ -0,0 +1,32 @@ +#include "solve_03.h" +#include "node.h" + +#include + +int t3_solve (node *head) +{ + char *last = head->string; + int count = 0, local = 1; + + for (head = head->next; head; head = head->next) + { + int cmp = strcmp(head->string, last); + if (cmp < 0) { + if (local) { + count += local; + local = 0; + } + } else if (cmp == 0) { + if (local) + local++; + } else + local = 1; + + last = head->string; + } + + count += local; + + return count; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_03.h b/2025.05.23/dist/Krivoruchenko_SK/solve_03.h new file mode 100644 index 0000000..cbde131 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_03.h @@ -0,0 +1,8 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include "node.h" + +int t3_solve (node *head); + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_04.c b/2025.05.23/dist/Krivoruchenko_SK/solve_04.c new file mode 100644 index 0000000..5e65862 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_04.c @@ -0,0 +1,40 @@ +#include "solve_04.h" +#include "node.h" + +#include + +int t4_solve (node *head) +{ + char *last = head->string; + int maximum = 0, count = 0, local = 1, strict = 1; + + for (head = head->next; head; head = head->next) + { + int cmp = strcmp(head->string, last); + if (cmp > 0) { + count += local; + local = 1; + strict = 1; + } else if (cmp < 0) { + if (!strict) + count += local; + if (maximum < count) + maximum = count; + count = 0; + local = 1; + strict = 0; + } else { + local++; + } + last = head->string; + } + + if (!strict) + count += local; + + if (maximum < count) + maximum = count; + + return maximum; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_04.h b/2025.05.23/dist/Krivoruchenko_SK/solve_04.h new file mode 100644 index 0000000..6cb74f8 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_04.h @@ -0,0 +1,8 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include "node.h" + +int t4_solve (node *head); + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_05.c b/2025.05.23/dist/Krivoruchenko_SK/solve_05.c new file mode 100644 index 0000000..14c38e4 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_05.c @@ -0,0 +1,27 @@ +#include "solve_05.h" +#include "node.h" + +#include + +int t5_solve (node *head) +{ + char *last = head->string; + int maximum = 1, count = 1; + + for (head = head->next; head; head = head->next) + { + if (strcmp(head->string, last) > 0) + count++; + else { + if (maximum < count) + maximum = count; + + count = 1; + } + + last = head->string; + } + + return maximum; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_05.h b/2025.05.23/dist/Krivoruchenko_SK/solve_05.h new file mode 100644 index 0000000..126ce12 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_05.h @@ -0,0 +1,8 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include "node.h" + +int t5_solve (node *head); + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_06.c b/2025.05.23/dist/Krivoruchenko_SK/solve_06.c new file mode 100644 index 0000000..2c334dc --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_06.c @@ -0,0 +1,20 @@ +#include "solve_06.h" +#include "node.h" + +#include + +int t6_solve (node *head) +{ + char *last = head->string; + int count = 1; + + for (head = head->next; head; head = head->next) + { + if (strcmp(head->string, last)) + count++; + last = head->string; + } + + return count; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_06.h b/2025.05.23/dist/Krivoruchenko_SK/solve_06.h new file mode 100644 index 0000000..dbf48a3 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_06.h @@ -0,0 +1,8 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include "node.h" + +int t6_solve (node *head); + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_07.c b/2025.05.23/dist/Krivoruchenko_SK/solve_07.c new file mode 100644 index 0000000..25ada02 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_07.c @@ -0,0 +1,28 @@ +#include "solve_07.h" +#include "node.h" + +#include + +int t7_solve (node *head) +{ + char *last = head->string; + int maximum = 0, count = 1; + + for (head = head->next; head; head = head->next) + { + if (strcmp(head->string, last)) + count++; + else { + if (maximum < (count-1)) + maximum = count-1; + count = 0; + } + last = head->string; + } + + if (maximum < count) + maximum = count; + + return maximum; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_07.h b/2025.05.23/dist/Krivoruchenko_SK/solve_07.h new file mode 100644 index 0000000..e35b281 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_07.h @@ -0,0 +1,8 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include "node.h" + +int t7_solve (node *head); + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_08.c b/2025.05.23/dist/Krivoruchenko_SK/solve_08.c new file mode 100644 index 0000000..171c5f2 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_08.c @@ -0,0 +1,42 @@ +#include "solve_08.h" +#include "node.h" + +#include +#include + +node * t8_solve (node *head) +{ + node *last = head; + node *curr, *next; + + curr = head->next; + if (!curr) + return head; + + while (strcmp(last->string, curr->string) >= 0) { + free(last->string); + free(last); + + last = curr; + head = curr; + curr = curr->next; + if (!curr) + return head; + } + + for (next = curr->next; next; next = curr->next) + { + if (strcmp(curr->string, next->string) >= 0) { + free(curr->string); + free(curr); + + last->next = next; + } else + last = curr; + + curr = next; + } + + return head; +} + diff --git a/2025.05.23/dist/Krivoruchenko_SK/solve_08.h b/2025.05.23/dist/Krivoruchenko_SK/solve_08.h new file mode 100644 index 0000000..3280479 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/solve_08.h @@ -0,0 +1,8 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include "node.h" + +node * t8_solve (node *head); + +#endif diff --git a/2025.05.23/dist/Krivoruchenko_SK/status.h b/2025.05.23/dist/Krivoruchenko_SK/status.h new file mode 100644 index 0000000..38b6e67 --- /dev/null +++ b/2025.05.23/dist/Krivoruchenko_SK/status.h @@ -0,0 +1,16 @@ +#ifndef STATUS_H +#define STATUS_H + +#define ERR_MSG_MEM "Error: Not enough memory" +#define ERR_MSG_OPEN "Error: Cannot open file" +#define ERR_MSG_READ "Error: Cannot read file" + +typedef enum +{ + SUCCESS, + ERR_OPEN = -1, + ERR_READ = -2, + ERR_MEM = -3 +} io_status; + +#endif diff --git a/scripts/fix-makefiles.sh b/scripts/fix-makefiles.sh old mode 100644 new mode 100755 diff --git a/scripts/make_dist.sh b/scripts/make_dist.sh old mode 100644 new mode 100755 index 2c0da34..e68dd81 --- a/scripts/make_dist.sh +++ b/scripts/make_dist.sh @@ -31,6 +31,13 @@ cleanup_and_exit() { exit 1 } +replace_in_file() { + local file="$1" + local num="$2" + + sed -i -E "s|([\"'])solve\.h\1|\1solve_${num}.h\1|g" "$file" +} + # Проход по задачам for num in "${tasks[@]}"; do folder=$(printf "%02dEx" "$num") @@ -44,12 +51,15 @@ for num in "${tasks[@]}"; do cleanup_and_exit "Файл $src не найден" fi - base=$(basename "$file" .c) + base="${file%.*}" ext="${file##*.}" dest_file="$dest_dir/${base}_${folder:0:2}.$ext" cp "$src" "$dest_file" || cleanup_and_exit "Ошибка копирования $src" copied_files+=("$dest_file") + if [[ "$file" == "main.c" || "$file" == "solve.c" ]]; then + replace_in_file "$dest_file" "${folder:0:2}" + fi done done