From c73176035de5c2987c1cf21ef525387d07d904b1 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 23 Nov 2025 17:45:15 +0300 Subject: [PATCH 01/12] =?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 02/12] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=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 384734ff85a57c880869d4e5ce50e89dc1b6c310 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sat, 20 Dec 2025 22:55:01 +0300 Subject: [PATCH 03/12] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=BE=D1=80=D0=BC=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .CIclang/.clang-format => .clang-format | 0 {.CIclang/.github => .github}/dependabot.yml | 0 {.CIclang/.github => .github}/workflows/build-and-lint.yml | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename .CIclang/.clang-format => .clang-format (100%) rename {.CIclang/.github => .github}/dependabot.yml (100%) rename {.CIclang/.github => .github}/workflows/build-and-lint.yml (80%) diff --git a/.CIclang/.clang-format b/.clang-format similarity index 100% rename from .CIclang/.clang-format rename to .clang-format diff --git a/.CIclang/.github/dependabot.yml b/.github/dependabot.yml similarity index 100% rename from .CIclang/.github/dependabot.yml rename to .github/dependabot.yml diff --git a/.CIclang/.github/workflows/build-and-lint.yml b/.github/workflows/build-and-lint.yml similarity index 80% rename from .CIclang/.github/workflows/build-and-lint.yml rename to .github/workflows/build-and-lint.yml index a2c12fd..31983d4 100644 --- a/.CIclang/.github/workflows/build-and-lint.yml +++ b/.github/workflows/build-and-lint.yml @@ -11,4 +11,4 @@ jobs: - 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 + find . -path ./build -prune -o -type f -name '*.[c|h]' -print | xargs clang-format-18 --style=file --dry-run -Werror \ No newline at end of file From 0d5936c3b480b4449a6d1cfb3c72910a0aadf4fc Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 21 Dec 2025 17:43:58 +0300 Subject: [PATCH 04/12] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0=20=D0=B2=20=D0=B1=D0=B8=D0=BD=D0=B0=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=BF=D1=80=D0=B5=D0=B4=D1=81=D1=82=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D1=84=D1=83=D0=BD?= =?UTF-8?q?=D0=BA=D1=86=D0=B8=D0=B8=20=D1=81=20=D1=8D=D1=82=D0=B8=D0=BC=20?= =?UTF-8?q?=D1=81=D0=B2=D1=8F=D0=B7=D0=B0=D0=BD=D0=BD=D1=8B=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- binRepr/binRepresent.c | 104 +++++++++++++++++++++++++++++++++++++++++ binRepr/binRepresent.h | 7 +++ 2 files changed, 111 insertions(+) create mode 100644 binRepr/binRepresent.c create mode 100644 binRepr/binRepresent.h diff --git a/binRepr/binRepresent.c b/binRepr/binRepresent.c new file mode 100644 index 0000000..32da4bd --- /dev/null +++ b/binRepr/binRepresent.c @@ -0,0 +1,104 @@ +#include +#include +#include + +void binPrint(int num[]) +{ + for (int i = 0; i < 32; i++) { + printf("%d", num[i]); + } + printf("\n"); +} + +int* bin(int number) +{ + + int num = number; + int* binary = (int*)malloc(32 * sizeof(int)); + if (number < 0) { + num *= -1; + } + int ind = 31; + + while (num != 0) { + binary[ind] = num % 2; + num /= 2; + ind--; + } + + if (number < 0) { + for (int i = 1; i < 32; i++) { + if (binary[i] == 1) { + binary[i] = 0; + } else { + binary[i] = 1; + } + } + binary[0] = 1; + + binary[31]++; + ind = 31; + while (binary[ind] == 2) { + binary[ind] = 0; + binary[ind - 1]++; + ind--; + } + } + return binary; +} + +int decimal(int num[]) +{ + int decimalNum = 0; + + if (num[0] == 0) { + for (int i = 1; i < 32; i++) { + int degree = pow(2, i - 1); + decimalNum += degree * num[31 - i + 1]; + } + return decimalNum; + } else { + for (int i = 1; i < 32; i++) { + if (num[i] == 1) { + num[i] = 0; + } else { + num[i] = 1; + } + } + num[0] = 1; + + num[31]++; + int ind = 31; + while (num[ind] == 2) { + num[ind] = 0; + num[ind - 1]++; + ind--; + } + + for (int i = 1; i < 32; i++) { + int degree = pow(2, i - 1); + decimalNum += degree * num[31 - i + 1]; + } + return -decimalNum; + } +} + +int* binSumm(int num1[], int num2[]) +{ + int* results = (int*)(malloc(32 * sizeof(int))); + int carry = 0; + + for (int i = 31; i > -1; i--) { + int sum = num1[i] + num2[i] + carry; + results[i] = sum % 2; + carry = sum / 2; + } + return results; +} + +int decSumm(int num1[], int num2[]) +{ + int* biSumm = binSumm(num1, num2); + int deSumm = decimal(biSumm); + return deSumm; +} \ No newline at end of file diff --git a/binRepr/binRepresent.h b/binRepr/binRepresent.h new file mode 100644 index 0000000..193df25 --- /dev/null +++ b/binRepr/binRepresent.h @@ -0,0 +1,7 @@ +#pragma once + +void binPrint(int num[]); +int* bin(int number); +int decimal(int num[]); +int* binSumm(int num1[], int num2[]); +int decSumm(int num1[], int num2[]); From 6a1941328f18fd5c19c901b6cfe019ebd77c6d10 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 21 Dec 2025 17:44:45 +0300 Subject: [PATCH 05/12] =?UTF-8?q?main.c=20=D0=B8=20CMakeLists.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw12.binRepr/CMakeLists.txt | 19 +++++++++ hw12.binRepr/main.c | 84 +++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 hw12.binRepr/CMakeLists.txt create mode 100644 hw12.binRepr/main.c diff --git a/hw12.binRepr/CMakeLists.txt b/hw12.binRepr/CMakeLists.txt new file mode 100644 index 0000000..9f8ede9 --- /dev/null +++ b/hw12.binRepr/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.25) +project(hw12 C) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) + +# Создаём библиотеку из файла в поддиректории +add_library(binRepresent binRepr/binRepresent.c) + +# Создаём исполняемый файл из файла в другой поддиректории +add_executable(main hw12.binRepr/main.c) + +# Линкуем библиотеку +target_link_libraries(main PRIVATE binRepresent) + +# Добавляем путь к заголовочным файлам библиотеки +target_include_directories(main PRIVATE + ${CMAKE_SOURCE_DIR}/binRepresent +) \ No newline at end of file diff --git a/hw12.binRepr/main.c b/hw12.binRepr/main.c new file mode 100644 index 0000000..49aa218 --- /dev/null +++ b/hw12.binRepr/main.c @@ -0,0 +1,84 @@ +#include "../binRepr/binRepresent.h" +#include +#include +#include +#include + +bool sravn(int* bin1, int* bin2) +{ + for (int i = 0; i < 32; i++) { + if (bin1[i] != bin2[i]) { + return false; + } + } + return true; +} + +bool run_tests() +{ + int s = 0; + + int a = 1; + int* b = bin(a); + int b2[32] = { 0 }; + b2[31] = 1; + if (sravn(b, b2)) { + s++; + } + + int c = decimal(b); + if (c == 1) { + s++; + } + + int* d = bin(-a); + int* e = binSumm(d, b); + int e2[32] = { 0 }; + if (sravn(e, e2)) { + s++; + } + + int f = decSumm(d, b); + if (f == 0) { + s++; + } + + return s == 4; +} + +int main(int argc, char** argv) +{ + if (argc == 2 && strcmp(argv[1], "--test") == 0) { + if (!run_tests()) { + printf("Test failed\n"); + return 1; + } else { + printf("Test passed\n"); + return 0; + } + } + + int number1 = 0; + printf("Введите первое число(целое не больше 2^32): "); + scanf("%d", &number1); + int number2 = 0; + prntf("Введите второе число(целое не больше 2^32): "); + scanf("%d", number2); + + int* num1Bin = bin(number1); + int* num2Bin = bin(number2); + + printf("%d в двоичном представлении: ", number1); + binPrint(num1Bin); + printf("%d в двоичном представлении: ", number2); + binPrint(num2Bin); + + int* summ = binSumm(num1Bin, num2Bin); + prinf("Сумма в двоичной системе: "); + binPrint(summ); + + int sumDecimal = decimal(summ); + printf("Сумма в десятичной системе %d", sumDecimal); + + return 0; +} \ No newline at end of file From 29dd5b0f674484d84f451eae64285a21dd12a531 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 21 Dec 2025 17:51:20 +0300 Subject: [PATCH 06/12] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D1=82?= =?UTF-8?q?=D0=BE=D1=87=D0=BA=D0=B8=20=D0=B2=20=D0=BD=D0=B0=D1=87=D0=B0?= =?UTF-8?q?=D0=BB=D0=B5=20=D0=B8=20=D0=BA=D0=BE=D0=BD=D1=86=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .clang-format | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.clang-format b/.clang-format index e2cbc59..bda3ac9 100644 --- a/.clang-format +++ b/.clang-format @@ -1,4 +1,3 @@ ---- Language: Cpp # BasedOnStyle: WebKit AccessModifierOffset: -4 @@ -241,5 +240,4 @@ WhitespaceSensitiveMacros: - CF_SWIFT_NAME - NS_SWIFT_NAME - PP_STRINGIZE - - STRINGIZE -... \ No newline at end of file + - STRINGIZE \ No newline at end of file From 9dbbb576d0516e3e541ac54a63cde9e031355a3c Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 21 Dec 2025 17:53:39 +0300 Subject: [PATCH 07/12] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw12.binRepr/main.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw12.binRepr/main.c b/hw12.binRepr/main.c index 49aa218..3c70ee4 100644 --- a/hw12.binRepr/main.c +++ b/hw12.binRepr/main.c @@ -2,7 +2,6 @@ #include #include #include -#include bool sravn(int* bin1, int* bin2) { @@ -76,7 +75,7 @@ int main(int argc, char** argv) int* summ = binSumm(num1Bin, num2Bin); prinf("Сумма в двоичной системе: "); binPrint(summ); - + int sumDecimal = decimal(summ); printf("Сумма в десятичной системе %d", sumDecimal); From 483afea86f1597d0a162d284a3ac8d5a2bce65be Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 14:37:30 +0300 Subject: [PATCH 08/12] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=B0=D0=BF=D0=BA=D1=83=20binRepr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- binRepr/binRepresent.c | 104 ----------------------------------------- binRepr/binRepresent.h | 7 --- 2 files changed, 111 deletions(-) delete mode 100644 binRepr/binRepresent.c delete mode 100644 binRepr/binRepresent.h diff --git a/binRepr/binRepresent.c b/binRepr/binRepresent.c deleted file mode 100644 index 32da4bd..0000000 --- a/binRepr/binRepresent.c +++ /dev/null @@ -1,104 +0,0 @@ -#include -#include -#include - -void binPrint(int num[]) -{ - for (int i = 0; i < 32; i++) { - printf("%d", num[i]); - } - printf("\n"); -} - -int* bin(int number) -{ - - int num = number; - int* binary = (int*)malloc(32 * sizeof(int)); - if (number < 0) { - num *= -1; - } - int ind = 31; - - while (num != 0) { - binary[ind] = num % 2; - num /= 2; - ind--; - } - - if (number < 0) { - for (int i = 1; i < 32; i++) { - if (binary[i] == 1) { - binary[i] = 0; - } else { - binary[i] = 1; - } - } - binary[0] = 1; - - binary[31]++; - ind = 31; - while (binary[ind] == 2) { - binary[ind] = 0; - binary[ind - 1]++; - ind--; - } - } - return binary; -} - -int decimal(int num[]) -{ - int decimalNum = 0; - - if (num[0] == 0) { - for (int i = 1; i < 32; i++) { - int degree = pow(2, i - 1); - decimalNum += degree * num[31 - i + 1]; - } - return decimalNum; - } else { - for (int i = 1; i < 32; i++) { - if (num[i] == 1) { - num[i] = 0; - } else { - num[i] = 1; - } - } - num[0] = 1; - - num[31]++; - int ind = 31; - while (num[ind] == 2) { - num[ind] = 0; - num[ind - 1]++; - ind--; - } - - for (int i = 1; i < 32; i++) { - int degree = pow(2, i - 1); - decimalNum += degree * num[31 - i + 1]; - } - return -decimalNum; - } -} - -int* binSumm(int num1[], int num2[]) -{ - int* results = (int*)(malloc(32 * sizeof(int))); - int carry = 0; - - for (int i = 31; i > -1; i--) { - int sum = num1[i] + num2[i] + carry; - results[i] = sum % 2; - carry = sum / 2; - } - return results; -} - -int decSumm(int num1[], int num2[]) -{ - int* biSumm = binSumm(num1, num2); - int deSumm = decimal(biSumm); - return deSumm; -} \ No newline at end of file diff --git a/binRepr/binRepresent.h b/binRepr/binRepresent.h deleted file mode 100644 index 193df25..0000000 --- a/binRepr/binRepresent.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -void binPrint(int num[]); -int* bin(int number); -int decimal(int num[]); -int* binSumm(int num1[], int num2[]); -int decSumm(int num1[], int num2[]); From 46fae829ed04e129a2014e3b76981c17edc837c0 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 14:41:00 +0300 Subject: [PATCH 09/12] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BD=D0=B5=D0=B4=D0=BE=D1=87=D0=B5=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw12.binRepr/CMakeLists.txt | 9 +--- hw12.binRepr/binRepresent.c | 104 ++++++++++++++++++++++++++++++++++++ hw12.binRepr/binRepresent.h | 7 +++ hw12.binRepr/main.c | 4 +- 4 files changed, 115 insertions(+), 9 deletions(-) create mode 100644 hw12.binRepr/binRepresent.c create mode 100644 hw12.binRepr/binRepresent.h diff --git a/hw12.binRepr/CMakeLists.txt b/hw12.binRepr/CMakeLists.txt index 9f8ede9..32d6ffc 100644 --- a/hw12.binRepr/CMakeLists.txt +++ b/hw12.binRepr/CMakeLists.txt @@ -5,15 +5,10 @@ set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) # Создаём библиотеку из файла в поддиректории -add_library(binRepresent binRepr/binRepresent.c) +add_library(binRepresent binRepresent.c) # Создаём исполняемый файл из файла в другой поддиректории -add_executable(main hw12.binRepr/main.c) +add_executable(main main.c) # Линкуем библиотеку target_link_libraries(main PRIVATE binRepresent) - -# Добавляем путь к заголовочным файлам библиотеки -target_include_directories(main PRIVATE - ${CMAKE_SOURCE_DIR}/binRepresent -) \ No newline at end of file diff --git a/hw12.binRepr/binRepresent.c b/hw12.binRepr/binRepresent.c new file mode 100644 index 0000000..32da4bd --- /dev/null +++ b/hw12.binRepr/binRepresent.c @@ -0,0 +1,104 @@ +#include +#include +#include + +void binPrint(int num[]) +{ + for (int i = 0; i < 32; i++) { + printf("%d", num[i]); + } + printf("\n"); +} + +int* bin(int number) +{ + + int num = number; + int* binary = (int*)malloc(32 * sizeof(int)); + if (number < 0) { + num *= -1; + } + int ind = 31; + + while (num != 0) { + binary[ind] = num % 2; + num /= 2; + ind--; + } + + if (number < 0) { + for (int i = 1; i < 32; i++) { + if (binary[i] == 1) { + binary[i] = 0; + } else { + binary[i] = 1; + } + } + binary[0] = 1; + + binary[31]++; + ind = 31; + while (binary[ind] == 2) { + binary[ind] = 0; + binary[ind - 1]++; + ind--; + } + } + return binary; +} + +int decimal(int num[]) +{ + int decimalNum = 0; + + if (num[0] == 0) { + for (int i = 1; i < 32; i++) { + int degree = pow(2, i - 1); + decimalNum += degree * num[31 - i + 1]; + } + return decimalNum; + } else { + for (int i = 1; i < 32; i++) { + if (num[i] == 1) { + num[i] = 0; + } else { + num[i] = 1; + } + } + num[0] = 1; + + num[31]++; + int ind = 31; + while (num[ind] == 2) { + num[ind] = 0; + num[ind - 1]++; + ind--; + } + + for (int i = 1; i < 32; i++) { + int degree = pow(2, i - 1); + decimalNum += degree * num[31 - i + 1]; + } + return -decimalNum; + } +} + +int* binSumm(int num1[], int num2[]) +{ + int* results = (int*)(malloc(32 * sizeof(int))); + int carry = 0; + + for (int i = 31; i > -1; i--) { + int sum = num1[i] + num2[i] + carry; + results[i] = sum % 2; + carry = sum / 2; + } + return results; +} + +int decSumm(int num1[], int num2[]) +{ + int* biSumm = binSumm(num1, num2); + int deSumm = decimal(biSumm); + return deSumm; +} \ No newline at end of file diff --git a/hw12.binRepr/binRepresent.h b/hw12.binRepr/binRepresent.h new file mode 100644 index 0000000..193df25 --- /dev/null +++ b/hw12.binRepr/binRepresent.h @@ -0,0 +1,7 @@ +#pragma once + +void binPrint(int num[]); +int* bin(int number); +int decimal(int num[]); +int* binSumm(int num1[], int num2[]); +int decSumm(int num1[], int num2[]); diff --git a/hw12.binRepr/main.c b/hw12.binRepr/main.c index 3c70ee4..c1309a0 100644 --- a/hw12.binRepr/main.c +++ b/hw12.binRepr/main.c @@ -61,7 +61,7 @@ int main(int argc, char** argv) printf("Введите первое число(целое не больше 2^32): "); scanf("%d", &number1); int number2 = 0; - prntf("Введите второе число(целое не больше 2^32): "); + printf("Введите второе число(целое не больше 2^32): "); scanf("%d", number2); int* num1Bin = bin(number1); @@ -73,7 +73,7 @@ int main(int argc, char** argv) binPrint(num2Bin); int* summ = binSumm(num1Bin, num2Bin); - prinf("Сумма в двоичной системе: "); + printf("Сумма в двоичной системе: "); binPrint(summ); int sumDecimal = decimal(summ); From 36aaf5170cc5f45a94eb024adbc76379e008e8ab Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 17:36:53 +0300 Subject: [PATCH 10/12] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=B2=D1=81=D1=91=20=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw12.binRepr/binRepresent.c | 68 ++++++++++--------------------------- hw12.binRepr/binRepresent.h | 4 +-- hw12.binRepr/main.c | 55 +++++++++++++++--------------- 3 files changed, 47 insertions(+), 80 deletions(-) diff --git a/hw12.binRepr/binRepresent.c b/hw12.binRepr/binRepresent.c index 32da4bd..4d5684b 100644 --- a/hw12.binRepr/binRepresent.c +++ b/hw12.binRepr/binRepresent.c @@ -1,6 +1,7 @@ #include #include #include +#include "binRepresent.h" void binPrint(int num[]) { @@ -10,41 +11,30 @@ void binPrint(int num[]) printf("\n"); } -int* bin(int number) +void bin(int result[], int number) { - int num = number; - int* binary = (int*)malloc(32 * sizeof(int)); if (number < 0) { num *= -1; } int ind = 31; while (num != 0) { - binary[ind] = num % 2; + result[ind] = num % 2; num /= 2; ind--; } if (number < 0) { for (int i = 1; i < 32; i++) { - if (binary[i] == 1) { - binary[i] = 0; - } else { - binary[i] = 1; - } + result[i] = 1 - result[i]; } - binary[0] = 1; + result[0] = 1; - binary[31]++; - ind = 31; - while (binary[ind] == 2) { - binary[ind] = 0; - binary[ind - 1]++; - ind--; - } + int one[32] = { 0 }; + one[31] = 1; + binSumm(result, one, result); } - return binary; } int decimal(int num[]) @@ -52,53 +42,31 @@ int decimal(int num[]) int decimalNum = 0; if (num[0] == 0) { - for (int i = 1; i < 32; i++) { - int degree = pow(2, i - 1); - decimalNum += degree * num[31 - i + 1]; + for (int i = 0; i < 30; i++) { + int degree = 1 << i; + decimalNum += degree * num[31 - i]; } + int degree = 1 << 31; + decimalNum -= degree * num[0]; return decimalNum; - } else { - for (int i = 1; i < 32; i++) { - if (num[i] == 1) { - num[i] = 0; - } else { - num[i] = 1; - } - } - num[0] = 1; - - num[31]++; - int ind = 31; - while (num[ind] == 2) { - num[ind] = 0; - num[ind - 1]++; - ind--; - } - - for (int i = 1; i < 32; i++) { - int degree = pow(2, i - 1); - decimalNum += degree * num[31 - i + 1]; - } - return -decimalNum; } + return decimalNum; } -int* binSumm(int num1[], int num2[]) +void binSumm(int result[], int num1[], int num2[]) { - int* results = (int*)(malloc(32 * sizeof(int))); int carry = 0; - for (int i = 31; i > -1; i--) { int sum = num1[i] + num2[i] + carry; - results[i] = sum % 2; + result[i] = sum % 2; carry = sum / 2; } - return results; } int decSumm(int num1[], int num2[]) { - int* biSumm = binSumm(num1, num2); + int biSumm[32] = { 0 }; + binSumm(biSumm, num1, num2); int deSumm = decimal(biSumm); return deSumm; } \ No newline at end of file diff --git a/hw12.binRepr/binRepresent.h b/hw12.binRepr/binRepresent.h index 193df25..9b03270 100644 --- a/hw12.binRepr/binRepresent.h +++ b/hw12.binRepr/binRepresent.h @@ -1,7 +1,7 @@ #pragma once void binPrint(int num[]); -int* bin(int number); +void bin(int result[], int number); int decimal(int num[]); -int* binSumm(int num1[], int num2[]); +void binSumm(int result[], int num1[], int num2[]); int decSumm(int num1[], int num2[]); diff --git a/hw12.binRepr/main.c b/hw12.binRepr/main.c index c1309a0..b3681e4 100644 --- a/hw12.binRepr/main.c +++ b/hw12.binRepr/main.c @@ -1,44 +1,40 @@ -#include "../binRepr/binRepresent.h" +#include "binRepresent.h" #include #include #include +#include -bool sravn(int* bin1, int* bin2) -{ - for (int i = 0; i < 32; i++) { - if (bin1[i] != bin2[i]) { - return false; - } - } - return true; -} +const int length = 32; bool run_tests() { int s = 0; - int a = 1; - int* b = bin(a); - int b2[32] = { 0 }; - b2[31] = 1; - if (sravn(b, b2)) { + int number1 = 1; + int number1Bin[32] = { 0 }; + bin(number1Bin, number1); + int number2Bin[32] = { 0 }; + number2Bin[31] = 1; + if (memcmp(number1Bin, number2Bin, length) == 0) { s++; } - int c = decimal(b); - if (c == 1) { + int number3 = decimal(number1Bin); + if (number3 == 1) { s++; } - int* d = bin(-a); - int* e = binSumm(d, b); - int e2[32] = { 0 }; - if (sravn(e, e2)) { + int number4Bin[32] = { 0 }; + bin(number4Bin, -number1); + int number5Bin[32] = { 0 }; + binSumm(number5Bin, number4Bin, number1Bin); + int number6Bin[32] = { 0 }; + if (memcmp(number5Bin, number6Bin, length) == 0) { s++; } - int f = decSumm(d, b); - if (f == 0) { + int number7 = decSumm(number4Bin, number1Bin); + if (number7 == 0) { s++; } @@ -62,22 +58,25 @@ int main(int argc, char** argv) scanf("%d", &number1); int number2 = 0; printf("Введите второе число(целое не больше 2^32): "); - scanf("%d", number2); + scanf("%d", &number2); - int* num1Bin = bin(number1); - int* num2Bin = bin(number2); + int num1Bin[32] = { 0 }; + bin(num1Bin, number1); + int num2Bin[32] = { 0 }; + bin(num2Bin, number2); printf("%d в двоичном представлении: ", number1); binPrint(num1Bin); printf("%d в двоичном представлении: ", number2); binPrint(num2Bin); - int* summ = binSumm(num1Bin, num2Bin); + int summ[32] = { 0 }; + binSumm(summ, num1Bin, num2Bin); printf("Сумма в двоичной системе: "); binPrint(summ); int sumDecimal = decimal(summ); - printf("Сумма в десятичной системе %d", sumDecimal); + printf("Сумма в десятичной системе %d\n", sumDecimal); return 0; } \ No newline at end of file From 7f1033f084f7d1c8a4b8773b72ad1e8b371d951f Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 17:44:46 +0300 Subject: [PATCH 11/12] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB,=20?= =?UTF-8?q?=D1=87=D1=82=D0=BE=D0=B1=D1=8B=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=20=D0=B4=D0=BB=D1=8F=20=D0=BB=D1=8E=D0=B1?= =?UTF-8?q?=D1=8B=D1=85=20=D1=87=D0=B8=D1=81=D0=B5=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw12.binRepr/binRepresent.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/hw12.binRepr/binRepresent.c b/hw12.binRepr/binRepresent.c index 4d5684b..b4523e1 100644 --- a/hw12.binRepr/binRepresent.c +++ b/hw12.binRepr/binRepresent.c @@ -41,15 +41,12 @@ int decimal(int num[]) { int decimalNum = 0; - if (num[0] == 0) { - for (int i = 0; i < 30; i++) { - int degree = 1 << i; - decimalNum += degree * num[31 - i]; - } - int degree = 1 << 31; - decimalNum -= degree * num[0]; - return decimalNum; + for (int i = 0; i < 30; i++) { + int degree = 1 << i; + decimalNum += degree * num[31 - i]; } + int degree = 1 << 31; + decimalNum -= degree * num[0]; return decimalNum; } From 3cfe83af6443997842f6a63fd1997dd3a8a03161 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 17:53:42 +0300 Subject: [PATCH 12/12] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=86=D0=B8=D0=BA=D0=BB=20=D0=B4=D0=BE=2032?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw12.binRepr/binRepresent.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hw12.binRepr/binRepresent.c b/hw12.binRepr/binRepresent.c index b4523e1..8c40d0a 100644 --- a/hw12.binRepr/binRepresent.c +++ b/hw12.binRepr/binRepresent.c @@ -41,12 +41,10 @@ int decimal(int num[]) { int decimalNum = 0; - for (int i = 0; i < 30; i++) { + for (int i = 0; i < 32; i++) { int degree = 1 << i; decimalNum += degree * num[31 - i]; } - int degree = 1 << 31; - decimalNum -= degree * num[0]; return decimalNum; }