From c73176035de5c2987c1cf21ef525387d07d904b1 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 23 Nov 2025 17:45:15 +0300 Subject: [PATCH 1/7] =?UTF-8?q?CI=20=D0=B4=D0=BB=D1=8F=20clanf-format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .CIclang/.clang-format | 245 ++++++++++++++++++ .CIclang/.github/dependabot.yml | 6 + .CIclang/.github/workflows/build-and-lint.yml | 24 ++ 3 files changed, 275 insertions(+) create mode 100644 .CIclang/.clang-format create mode 100644 .CIclang/.github/dependabot.yml create mode 100644 .CIclang/.github/workflows/build-and-lint.yml diff --git a/.CIclang/.clang-format b/.CIclang/.clang-format new file mode 100644 index 0000000..e2cbc59 --- /dev/null +++ b/.CIclang/.clang-format @@ -0,0 +1,245 @@ +--- +Language: Cpp +# BasedOnStyle: WebKit +AccessModifierOffset: -4 +AlignAfterOpenBracket: DontAlign +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseColons: false +AlignEscapedNewlines: Right +AlignOperands: DontAlign +AlignTrailingComments: + Kind: Never + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Empty +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: true + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: All +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: WebKit +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 0 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: false +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLinesAtEOF: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: Inner +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 4 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Left +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: true +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: true +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE +... \ No newline at end of file diff --git a/.CIclang/.github/dependabot.yml b/.CIclang/.github/dependabot.yml new file mode 100644 index 0000000..355e687 --- /dev/null +++ b/.CIclang/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: "weekly" \ No newline at end of file diff --git a/.CIclang/.github/workflows/build-and-lint.yml b/.CIclang/.github/workflows/build-and-lint.yml new file mode 100644 index 0000000..9d85c5a --- /dev/null +++ b/.CIclang/.github/workflows/build-and-lint.yml @@ -0,0 +1,24 @@ +name: Build and lint + +on: + - push + - pull_request + +jobs: + build-and-lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Check format + run: | + find . -path ./build -prune -o -type f -name '*.[c|h]' -print | xargs clang-format-18 --style=file --dry-run -Werror + - name: Configure + run: | + # -DCMAKE_EXPORT_COMPILE_COMMANDS=ON is important for clang-tidy + cmake . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + - name: Build + run: | + cmake --build build + - name: Lint + run: | + run-clang-tidy-18 -p=build \ No newline at end of file From 59d707baf4f63ba5bb8dbc1ca7bb8136418250ca Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 23 Nov 2025 17:54:41 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=84=D0=B0=D0=B9=D0=BB=20build-and-lint.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .CIclang/.github/workflows/build-and-lint.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.CIclang/.github/workflows/build-and-lint.yml b/.CIclang/.github/workflows/build-and-lint.yml index 9d85c5a..a2c12fd 100644 --- a/.CIclang/.github/workflows/build-and-lint.yml +++ b/.CIclang/.github/workflows/build-and-lint.yml @@ -12,13 +12,3 @@ jobs: - name: Check format run: | find . -path ./build -prune -o -type f -name '*.[c|h]' -print | xargs clang-format-18 --style=file --dry-run -Werror - - name: Configure - run: | - # -DCMAKE_EXPORT_COMPILE_COMMANDS=ON is important for clang-tidy - cmake . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - - name: Build - run: | - cmake --build build - - name: Lint - run: | - run-clang-tidy-18 -p=build \ No newline at end of file From d432181626e70ec5220545a60b24d868e6aeb603 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Thu, 11 Dec 2025 17:53:33 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- number1/CMakeLists.txt | 12 ++++ number1/a.out | Bin 0 -> 16072 bytes number1/main.c | 28 ++++++++++ number1/sortList.c | 124 +++++++++++++++++++++++++++++++++++++++++ number1/sortList.h | 11 ++++ 5 files changed, 175 insertions(+) create mode 100644 number1/CMakeLists.txt create mode 100755 number1/a.out create mode 100644 number1/main.c create mode 100644 number1/sortList.c create mode 100644 number1/sortList.h diff --git a/number1/CMakeLists.txt b/number1/CMakeLists.txt new file mode 100644 index 0000000..d7acade --- /dev/null +++ b/number1/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.25) + +project(testSortList C) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) + +add_library(sortList sortList.c) + +add_executable(main main.c) + +target_link_libraries(main PRIVATE sortList) diff --git a/number1/a.out b/number1/a.out new file mode 100755 index 0000000000000000000000000000000000000000..42ffbab48c29bd90cabce95f3479fba49d28c810 GIT binary patch literal 16072 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 +#include +#include +#include + +int main(int argc, char** argv) +{ + List* list = newList(); + int value = 0; + + int nul = 0; + deleteNode(list, nul); + + char numbers[1000]; + printf("Введите набор чисел:\n"); + fgets(numbers, sizeof(numbers), stdin); + char* token = strtok(numbers, " "); + while (token != NULL) { + int number = atoi(token); + insert(list, number); + token = strtok(NULL, " "); + } + printList(list); + deleteList(list); + + return 0; +} \ No newline at end of file diff --git a/number1/sortList.c b/number1/sortList.c new file mode 100644 index 0000000..6d08c7e --- /dev/null +++ b/number1/sortList.c @@ -0,0 +1,124 @@ +#include "sortList.h" +#include +#include + +// элемент списка +typedef struct ListNode { + // значение + int value; + // сколько раз ввели значение + int count; + // ссылка на следующую "ячейку" + struct ListNode* next; +} ListNode; + +typedef struct List { + ListNode* head; +} List; + +List* newList() +{ + List* list = (List*)malloc(sizeof(list)); + list->head = NULL; + return list; +} + +// положить элемент в соответствии с сортировкой +void insert(List* list, int value) +{ + + // Если список пуст или новый элемент меньше головы + if (list->head == NULL || value < list->head->value) { + ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); + newNode->value = value; + newNode->count = 1; + newNode->next = NULL; + + newNode->next = list->head; + list->head = newNode; + return; + } + + // поиск того, куда вставить новый элемент + ListNode* current = list->head; + while (current->next != NULL && current->next->value < value) { + current = current->next; + // printf("%d", current->next->value); + } + + if (current->next != NULL && current->next->value == value) { + current->next->count++; + return; + } else if (current->value == value) { + current->count++; + + } else { + ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); + newNode->value = value; + newNode->count = 1; + newNode->next = NULL; + + // вставка + newNode->next = current->next; + current->next = newNode; + + return; + } +} + +// проверка на возможность удаления элемента +bool deleteNode(List* list, int value) +{ + // если список пустой + if (list->head == NULL) { + return false; + } + + // если элемент это голова + if (list->head->value == value) { + ListNode* temprery = list->head; + list->head = list->head->next; + free(temprery); + return true; + } + + // поиск элемента для удаления + ListNode* current = list->head; + while (current->next != NULL && current->next->value != value) { + current = current->next; + } + + // Если элемент не найден + if (current->next == NULL) { + return false; + } + + // удаление элемента + ListNode* temprery = current->next; + current->next = current->next->next; + free(temprery); + return true; +} + +// вывод списка +void printList(List* list) +{ + ListNode* current = list->head; + while (current != NULL) { + printf("%d:%d, ", current->value, current->count); + current = current->next; + } + printf("\n"); +} + +// удаление списка +void deleteList(List* list) +{ + ListNode* current = list->head; + while (current != NULL) { + ListNode* temprery = current; + current = current->next; + free(temprery); + } + list->head = NULL; +} \ No newline at end of file diff --git a/number1/sortList.h b/number1/sortList.h new file mode 100644 index 0000000..50bee5d --- /dev/null +++ b/number1/sortList.h @@ -0,0 +1,11 @@ +#pragma once +#include + +typedef struct List List; + + +List* newList(); +void insert(List* list, int value); +bool deleteNode(List* list, int value); +void printList(List* list); +void deleteList(List* list); \ No newline at end of file From 412da6a84684ee4c4c8bf33319c953a9137cd855 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Thu, 11 Dec 2025 17:54:26 +0300 Subject: [PATCH 4/7] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BF=D0=B8=D0=BB=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9=20=D1=84=D0=B0=D0=B9=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- number1/a.out | Bin 16072 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 number1/a.out diff --git a/number1/a.out b/number1/a.out deleted file mode 100755 index 42ffbab48c29bd90cabce95f3479fba49d28c810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16072 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 Date: Thu, 11 Dec 2025 18:25:50 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- number2/CMakeLists.txt | 12 ++++ number2/minNumber.c | 35 ++++++++++++ number2/sortList.c | 124 +++++++++++++++++++++++++++++++++++++++++ number2/sortList.h | 11 ++++ 4 files changed, 182 insertions(+) create mode 100644 number2/CMakeLists.txt create mode 100644 number2/minNumber.c create mode 100644 number2/sortList.c create mode 100644 number2/sortList.h diff --git a/number2/CMakeLists.txt b/number2/CMakeLists.txt new file mode 100644 index 0000000..5afc5c6 --- /dev/null +++ b/number2/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.25) + +project(rewrite C) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) + +add_library(sortList sortList.c) + +add_executable(main minNumber.c) + +target_link_libraries(main PRIVATE sortList) diff --git a/number2/minNumber.c b/number2/minNumber.c new file mode 100644 index 0000000..3fc00c5 --- /dev/null +++ b/number2/minNumber.c @@ -0,0 +1,35 @@ +#include "sortList.h" +#include +#include +#include + +int minNumber(int number) +{ + List* list = newList(); + + int degree = 0; + while (number > 0) { + insert(list, number % 10); + number = number / 10; + degree++; + } + + int tempDegree = 0; + if (list->head->value == 0) { + tempDegree += list->head->count; + } + + int miniNumber = 0; + ListNode* current = list->head; + if (list->head->value == 0) { + current = current->next; + miniNumber += current->value * degree; + degree--; + degree = degree - tempDegree; + } + while (current != NULL) { + miniNumber += current->value * degree; + degree--; + } +} + diff --git a/number2/sortList.c b/number2/sortList.c new file mode 100644 index 0000000..6d08c7e --- /dev/null +++ b/number2/sortList.c @@ -0,0 +1,124 @@ +#include "sortList.h" +#include +#include + +// элемент списка +typedef struct ListNode { + // значение + int value; + // сколько раз ввели значение + int count; + // ссылка на следующую "ячейку" + struct ListNode* next; +} ListNode; + +typedef struct List { + ListNode* head; +} List; + +List* newList() +{ + List* list = (List*)malloc(sizeof(list)); + list->head = NULL; + return list; +} + +// положить элемент в соответствии с сортировкой +void insert(List* list, int value) +{ + + // Если список пуст или новый элемент меньше головы + if (list->head == NULL || value < list->head->value) { + ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); + newNode->value = value; + newNode->count = 1; + newNode->next = NULL; + + newNode->next = list->head; + list->head = newNode; + return; + } + + // поиск того, куда вставить новый элемент + ListNode* current = list->head; + while (current->next != NULL && current->next->value < value) { + current = current->next; + // printf("%d", current->next->value); + } + + if (current->next != NULL && current->next->value == value) { + current->next->count++; + return; + } else if (current->value == value) { + current->count++; + + } else { + ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); + newNode->value = value; + newNode->count = 1; + newNode->next = NULL; + + // вставка + newNode->next = current->next; + current->next = newNode; + + return; + } +} + +// проверка на возможность удаления элемента +bool deleteNode(List* list, int value) +{ + // если список пустой + if (list->head == NULL) { + return false; + } + + // если элемент это голова + if (list->head->value == value) { + ListNode* temprery = list->head; + list->head = list->head->next; + free(temprery); + return true; + } + + // поиск элемента для удаления + ListNode* current = list->head; + while (current->next != NULL && current->next->value != value) { + current = current->next; + } + + // Если элемент не найден + if (current->next == NULL) { + return false; + } + + // удаление элемента + ListNode* temprery = current->next; + current->next = current->next->next; + free(temprery); + return true; +} + +// вывод списка +void printList(List* list) +{ + ListNode* current = list->head; + while (current != NULL) { + printf("%d:%d, ", current->value, current->count); + current = current->next; + } + printf("\n"); +} + +// удаление списка +void deleteList(List* list) +{ + ListNode* current = list->head; + while (current != NULL) { + ListNode* temprery = current; + current = current->next; + free(temprery); + } + list->head = NULL; +} \ No newline at end of file diff --git a/number2/sortList.h b/number2/sortList.h new file mode 100644 index 0000000..50bee5d --- /dev/null +++ b/number2/sortList.h @@ -0,0 +1,11 @@ +#pragma once +#include + +typedef struct List List; + + +List* newList(); +void insert(List* list, int value); +bool deleteNode(List* list, int value); +void printList(List* list); +void deleteList(List* list); \ No newline at end of file From f62a962dee1934a265e7695b0b36071a554f358c Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Thu, 11 Dec 2025 19:24:30 +0300 Subject: [PATCH 6/7] =?UTF-8?q?=D0=A4=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B5=20sortList.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- number2/CMakeLists.txt | 15 +++++++++++++-- number2/minNumber.c | 35 ----------------------------------- number2/sortList.c | 37 ++++++++++++++++++++++++++++++++++++- number2/sortList.h | 1 + 4 files changed, 50 insertions(+), 38 deletions(-) delete mode 100644 number2/minNumber.c diff --git a/number2/CMakeLists.txt b/number2/CMakeLists.txt index 5afc5c6..fb30665 100644 --- a/number2/CMakeLists.txt +++ b/number2/CMakeLists.txt @@ -1,12 +1,23 @@ cmake_minimum_required(VERSION 3.25) -project(rewrite C) +project(testSortList C) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) add_library(sortList sortList.c) -add_executable(main minNumber.c) +add_executable(main main.c) target_link_libraries(main PRIVATE sortList) + +add_executable(tests testsList.c) + +target_link_libraries(tests PRIVATE sortList) + +enable_testing() + +add_test( + NAME test + COMMAND tests +) diff --git a/number2/minNumber.c b/number2/minNumber.c deleted file mode 100644 index 3fc00c5..0000000 --- a/number2/minNumber.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "sortList.h" -#include -#include -#include - -int minNumber(int number) -{ - List* list = newList(); - - int degree = 0; - while (number > 0) { - insert(list, number % 10); - number = number / 10; - degree++; - } - - int tempDegree = 0; - if (list->head->value == 0) { - tempDegree += list->head->count; - } - - int miniNumber = 0; - ListNode* current = list->head; - if (list->head->value == 0) { - current = current->next; - miniNumber += current->value * degree; - degree--; - degree = degree - tempDegree; - } - while (current != NULL) { - miniNumber += current->value * degree; - degree--; - } -} - diff --git a/number2/sortList.c b/number2/sortList.c index 6d08c7e..4747e67 100644 --- a/number2/sortList.c +++ b/number2/sortList.c @@ -1,6 +1,7 @@ #include "sortList.h" #include #include +#include // элемент списка typedef struct ListNode { @@ -18,7 +19,7 @@ typedef struct List { List* newList() { - List* list = (List*)malloc(sizeof(list)); + List* list = (List*)malloc(sizeof(List)); list->head = NULL; return list; } @@ -121,4 +122,38 @@ void deleteList(List* list) free(temprery); } list->head = NULL; +} + +int minPermutation(int number) +{ + List* list = newList(); + + int degree = 0; + while (number > 0) { + insert(list, number % 10); + number = number / 10; + degree++; + } + + int tempDegree = 0; + if (list->head->value == 0) { + tempDegree = list->head->count; + } + + int miniNumber = 0; + ListNode* current = list->head; + if (list->head->value == 0) { + current = current->next; + miniNumber += current->value * pow(10, degree); + degree--; + degree = degree - tempDegree; + } + while (current != NULL) { + for (int i = 0; i < current->count; i++) { + miniNumber += current->value * pow(10, degree); + degree--; + } + current = current->next; + } + return miniNumber; } \ No newline at end of file diff --git a/number2/sortList.h b/number2/sortList.h index 50bee5d..60e8263 100644 --- a/number2/sortList.h +++ b/number2/sortList.h @@ -5,6 +5,7 @@ typedef struct List List; List* newList(); +int minNumber(int number); void insert(List* list, int value); bool deleteNode(List* list, int value); void printList(List* list); From b20e025ad0afc3fb516ff4a33fc7c0b0bd9efd38 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Thu, 11 Dec 2025 19:25:27 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- number1/CMakeLists.txt | 2 +- number1/sortList.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/number1/CMakeLists.txt b/number1/CMakeLists.txt index d7acade..8f3dd2f 100644 --- a/number1/CMakeLists.txt +++ b/number1/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.25) -project(testSortList C) +project(rewrite C) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) diff --git a/number1/sortList.c b/number1/sortList.c index 6d08c7e..2f52f37 100644 --- a/number1/sortList.c +++ b/number1/sortList.c @@ -18,7 +18,7 @@ typedef struct List { List* newList() { - List* list = (List*)malloc(sizeof(list)); + List* list = (List*)malloc(sizeof(List)); list->head = NULL; return list; }