From 3c0cc69bcd08e0855f256b48a1dc7c8624f18394 Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 28 Sep 2022 19:10:55 +0300 Subject: [PATCH 01/11] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=D0=B2=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryNumbers/BinaryNumbers.sln | 31 ++++ .../BinaryNumbers/BinaryNumbers.vcxproj | 147 ++++++++++++++++++ .../BinaryNumbers.vcxproj.filters | 22 +++ BinaryNumbers/BinaryNumbers/main.c | 23 +++ 4 files changed, 223 insertions(+) create mode 100644 BinaryNumbers/BinaryNumbers.sln create mode 100644 BinaryNumbers/BinaryNumbers/BinaryNumbers.vcxproj create mode 100644 BinaryNumbers/BinaryNumbers/BinaryNumbers.vcxproj.filters create mode 100644 BinaryNumbers/BinaryNumbers/main.c diff --git a/BinaryNumbers/BinaryNumbers.sln b/BinaryNumbers/BinaryNumbers.sln new file mode 100644 index 0000000..6eda164 --- /dev/null +++ b/BinaryNumbers/BinaryNumbers.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BinaryNumbers", "BinaryNumbers\BinaryNumbers.vcxproj", "{5C800CDD-E117-44CE-B92D-4BB73C1CE4E6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5C800CDD-E117-44CE-B92D-4BB73C1CE4E6}.Debug|x64.ActiveCfg = Debug|x64 + {5C800CDD-E117-44CE-B92D-4BB73C1CE4E6}.Debug|x64.Build.0 = Debug|x64 + {5C800CDD-E117-44CE-B92D-4BB73C1CE4E6}.Debug|x86.ActiveCfg = Debug|Win32 + {5C800CDD-E117-44CE-B92D-4BB73C1CE4E6}.Debug|x86.Build.0 = Debug|Win32 + {5C800CDD-E117-44CE-B92D-4BB73C1CE4E6}.Release|x64.ActiveCfg = Release|x64 + {5C800CDD-E117-44CE-B92D-4BB73C1CE4E6}.Release|x64.Build.0 = Release|x64 + {5C800CDD-E117-44CE-B92D-4BB73C1CE4E6}.Release|x86.ActiveCfg = Release|Win32 + {5C800CDD-E117-44CE-B92D-4BB73C1CE4E6}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0862E17A-C16E-473A-A416-F533D44A449A} + EndGlobalSection +EndGlobal diff --git a/BinaryNumbers/BinaryNumbers/BinaryNumbers.vcxproj b/BinaryNumbers/BinaryNumbers/BinaryNumbers.vcxproj new file mode 100644 index 0000000..59488c8 --- /dev/null +++ b/BinaryNumbers/BinaryNumbers/BinaryNumbers.vcxproj @@ -0,0 +1,147 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {5c800cdd-e117-44ce-b92d-4bb73c1ce4e6} + BinaryNumbers + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + false + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/BinaryNumbers/BinaryNumbers/BinaryNumbers.vcxproj.filters b/BinaryNumbers/BinaryNumbers/BinaryNumbers.vcxproj.filters new file mode 100644 index 0000000..669bc4e --- /dev/null +++ b/BinaryNumbers/BinaryNumbers/BinaryNumbers.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + \ No newline at end of file diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c new file mode 100644 index 0000000..c435098 --- /dev/null +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -0,0 +1,23 @@ +#include +#include + +int scanOne(); + +int main() { + int number = scanOne(); +} + +int scanOne() { + int number = 0; + int checkScanf = scanf("%d", &number); + + while (checkScanf != 1) { + while (getchar() != '\n') { + } + + printf("%s", "... \n"); + checkScanf = scanf("%d", &number); + } + + return number; +} \ No newline at end of file From db898dffd9de485889f8258ac5426d948ed27103 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 1 Oct 2022 16:44:05 +0300 Subject: [PATCH 02/11] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8E=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=D1=81=D1=87=D1=91=D1=82=D0=B0=20=D0=BA=D0=BE=D0=BB?= =?UTF-8?q?=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82=D0=B2=D0=B0=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D1=80=D1=8F=D0=B4=D0=BE=D0=B2=20=D1=87=D0=B8=D1=81=D0=B5?= =?UTF-8?q?=D0=BB=D0=B1,=20=D0=B4=D0=B0=D0=B1=D1=8B=20=D0=B2=20=D0=B4?= =?UTF-8?q?=D1=80=D1=83=D0=B3=D0=BE=D0=B9=20=D1=84=D1=83=D0=BD=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D1=81=20=D0=BF=D0=BE=D0=BC=D0=BE=D1=89=D1=8C?= =?UTF-8?q?=D1=8E=20=D0=BC=D0=B0=D1=81=D1=81=D0=B8=D0=B2=D0=B0=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=B6=D0=BD=D0=BE=20=D0=B1=D1=8B=D0=BB=D0=BE=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=87=D0=B8=D1=81=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryNumbers/BinaryNumbers/main.c | 31 +++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c index c435098..5170cef 100644 --- a/BinaryNumbers/BinaryNumbers/main.c +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -1,10 +1,39 @@ #include #include +#include int scanOne(); +void print(int number); + +int sizeBinary(int number) { + int size = 0; + while (number) { + number = number >> 1; + ++size; + } + return size; +} + +void toBinary(int number1, int number2) { + int size1 = sizeBinary(number1); + int size2 = sizeBinary(number2); + int *binaryNumber1 = (int*)calloc(size1, sizeof(int)); + int *binaryNumber2 = (int*)calloc(size2, sizeof(int)); + + + free(binaryNumber1); + free(binaryNumber2); +} int main() { - int number = scanOne(); + setlocale(LC_ALL, "RUS"); + printf("%s", " , \n"); + int number1 = scanOne(); + int number2 = scanOne(); +} + +void print(int number) { + printf("%d\n", number); } int scanOne() { From a1e75bf70b5e29a7e9152b83e1203b9640edc8d3 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 1 Oct 2022 17:30:21 +0300 Subject: [PATCH 03/11] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=20=D1=87=D0=B8=D1=81?= =?UTF-8?q?=D0=B5=D0=BB=20=D0=B2=202=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC?= =?UTF-8?q?=D1=83,=20=D0=BF=D0=BE=D0=BA=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=B5=D1=82=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=BD=D0=B0=D1=82=D1=83=D1=80=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=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 --- BinaryNumbers/BinaryNumbers/main.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c index 5170cef..bdda551 100644 --- a/BinaryNumbers/BinaryNumbers/main.c +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -1,6 +1,7 @@ #include #include #include +#include int scanOne(); void print(int number); @@ -14,12 +15,31 @@ int sizeBinary(int number) { return size; } +void translateDecToBin(bool *binaryNumber, int size, int number) { + for (int i = size - 1; i >= 0; --i) { + binaryNumber[i] = (number & 1); + number = number >> 1; + } +} + +void printArrayBinary(bool *binaryNumber, int size) { + for (int i = 0; i < size; ++i) { + printf("%d", binaryNumber[i]); + } + printf("\n"); +} + void toBinary(int number1, int number2) { int size1 = sizeBinary(number1); int size2 = sizeBinary(number2); - int *binaryNumber1 = (int*)calloc(size1, sizeof(int)); - int *binaryNumber2 = (int*)calloc(size2, sizeof(int)); + bool *binaryNumber1 = (bool*)calloc(size1, sizeof(bool)); + bool *binaryNumber2 = (bool*)calloc(size2, sizeof(bool)); + + translateDecToBin(binaryNumber1, size1, number1); + translateDecToBin(binaryNumber2, size2, number2); + printArrayBinary(binaryNumber1, size1); + printArrayBinary(binaryNumber2, size2); free(binaryNumber1); free(binaryNumber2); @@ -30,6 +50,7 @@ int main() { printf("%s", " , \n"); int number1 = scanOne(); int number2 = scanOne(); + toBinary(number1, number2); } void print(int number) { From 29d958945d4016ea8e1484901ac8c54a36cd8aa0 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 1 Oct 2022 18:13:38 +0300 Subject: [PATCH 04/11] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B4=D0=BB=D1=8F=20=D0=BE=D1=82=D1=80=D0=B8=D1=86?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D1=85=20=D1=87=D0=B8?= =?UTF-8?q?=D1=81=D0=B5=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryNumbers/BinaryNumbers/main.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c index bdda551..a929bb9 100644 --- a/BinaryNumbers/BinaryNumbers/main.c +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -30,6 +30,8 @@ void printArrayBinary(bool *binaryNumber, int size) { } void toBinary(int number1, int number2) { + number1 = number1 < 0 ? 4096 - number1 : number1; + number2 = number2 < 0 ? 4096 - number2 : number2; int size1 = sizeBinary(number1); int size2 = sizeBinary(number2); bool *binaryNumber1 = (bool*)calloc(size1, sizeof(bool)); @@ -47,9 +49,17 @@ void toBinary(int number1, int number2) { int main() { setlocale(LC_ALL, "RUS"); - printf("%s", " , \n"); + printf("%s", " , . 4096 \n"); int number1 = scanOne(); + while (abs(number1) >= 4096) { + printf("%s\n", " ! "); + number1 = scanOne(); + } int number2 = scanOne(); + while (abs(number2) >= 4096) { + printf("%s\n", " ! "); + number2 = scanOne(); + } toBinary(number1, number2); } From 9ccfeb69414d5da1f4af2be8cebf9a9b4ed07942 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 1 Oct 2022 18:54:16 +0300 Subject: [PATCH 05/11] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BC=D0=B0=D1=81=D1=81=D0=B8=D0=B2=D1=8B=20=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=BC=D0=B8=20=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=80=D0=B0=D1=81=D0=BF=D0=BE=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=200=20=D0=B8=201,=20=D1=82=D0=B0=D0=BA=20=D0=BA?= =?UTF-8?q?=D0=B0=D0=BA=20=D0=BB=D0=B5=D0=B3=D1=87=D0=B5=20=D1=81=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D0=B4=D1=8B=D0=B2=D0=B0=D1=82=D1=8C=20=D1=87=D0=B8?= =?UTF-8?q?=D1=81=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryNumbers/BinaryNumbers/main.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c index a929bb9..d869e97 100644 --- a/BinaryNumbers/BinaryNumbers/main.c +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -16,35 +16,49 @@ int sizeBinary(int number) { } void translateDecToBin(bool *binaryNumber, int size, int number) { - for (int i = size - 1; i >= 0; --i) { + for (int i = 12; i >= 13 - size; --i) { binaryNumber[i] = (number & 1); number = number >> 1; } } void printArrayBinary(bool *binaryNumber, int size) { - for (int i = 0; i < size; ++i) { + for (int i = 13 - size; i < 13; ++i) { printf("%d", binaryNumber[i]); } printf("\n"); } +/* +void sumToBinary(int *binaryNumber1, int *binaryNumber2, int size1, int size2) { + int size3 = size1 + size2; + bool *binaryNumber3 = (bool*)calloc(size3, sizeof(int)); + int pastSum = -1; + int i = max(size1, size2) - 1; + while (i != 0) { + if (i > size1) { + + } else if (i > size2) { + + } else { + + } + } +} +*/ void toBinary(int number1, int number2) { number1 = number1 < 0 ? 4096 - number1 : number1; number2 = number2 < 0 ? 4096 - number2 : number2; int size1 = sizeBinary(number1); int size2 = sizeBinary(number2); - bool *binaryNumber1 = (bool*)calloc(size1, sizeof(bool)); - bool *binaryNumber2 = (bool*)calloc(size2, sizeof(bool)); + bool binaryNumber1[13] = {false}; + bool binaryNumber2[13] = {false}; translateDecToBin(binaryNumber1, size1, number1); translateDecToBin(binaryNumber2, size2, number2); printArrayBinary(binaryNumber1, size1); printArrayBinary(binaryNumber2, size2); - - free(binaryNumber1); - free(binaryNumber2); } int main() { From 28bfc41c3662592a9fbbf8f5f252fa390bf45d06 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 1 Oct 2022 20:36:41 +0300 Subject: [PATCH 06/11] =?UTF-8?q?=D0=B4=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=BB=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8E=20=D1=81?= =?UTF-8?q?=D1=83=D0=BC=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryNumbers/BinaryNumbers/main.c | 64 ++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c index d869e97..6171962 100644 --- a/BinaryNumbers/BinaryNumbers/main.c +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -22,30 +22,48 @@ void translateDecToBin(bool *binaryNumber, int size, int number) { } } -void printArrayBinary(bool *binaryNumber, int size) { - for (int i = 13 - size; i < 13; ++i) { +void printArrayBinary(bool *binaryNumber, int size, int maxPow2) { + for (int i = maxPow2 - size; i < maxPow2; ++i) { printf("%d", binaryNumber[i]); } printf("\n"); } -/* -void sumToBinary(int *binaryNumber1, int *binaryNumber2, int size1, int size2) { - int size3 = size1 + size2; - bool *binaryNumber3 = (bool*)calloc(size3, sizeof(int)); - - int pastSum = -1; - int i = max(size1, size2) - 1; - while (i != 0) { - if (i > size1) { - - } else if (i > size2) { - } else { +void sumToBinary(bool *binaryNumber1, bool *binaryNumber2, int size1, int size2) { + bool binaryNumber3[14] = {false}; + + bool pastSum = false; + int i = 12; + int size3 = 0; + while (i >= 0) { + if (binaryNumber1[i] && binaryNumber2[i] && !pastSum) { + binaryNumber3[i + 1] = false; + } else if (!binaryNumber1[i] && binaryNumber2[i] && pastSum) { + binaryNumber3[i + 1] = false; + } else if (binaryNumber1[i] && !binaryNumber2[i] && pastSum) { + binaryNumber3[i + 1] = false; + } else { + binaryNumber3[i + 1] = binaryNumber1[i] + binaryNumber2[i] + pastSum; + } + if (binaryNumber3[i + 1]) { + size3 = 14 - i - 1; } + pastSum = false; + if (binaryNumber1[i] && binaryNumber2[i]) { + pastSum = true; + } + --i; + } + + if (binaryNumber1[0] && binaryNumber2[0]) { + binaryNumber3[0] = true; + size3 = 14; } + + printArrayBinary(binaryNumber3, size3, 14); } -*/ + void toBinary(int number1, int number2) { number1 = number1 < 0 ? 4096 - number1 : number1; number2 = number2 < 0 ? 4096 - number2 : number2; @@ -57,8 +75,19 @@ void toBinary(int number1, int number2) { translateDecToBin(binaryNumber1, size1, number1); translateDecToBin(binaryNumber2, size2, number2); - printArrayBinary(binaryNumber1, size1); - printArrayBinary(binaryNumber2, size2); + printArrayBinary(binaryNumber1, size1, 13); + printArrayBinary(binaryNumber2, size2, 13); + + for (int i = 0; i < 13; ++i) { + printf("%d", binaryNumber1[i]); + } + printf("\n"); + for (int i = 0; i < 13; ++i) { + printf("%d", binaryNumber2[i]); + } + printf("\n"); + + sumToBinary(binaryNumber1, binaryNumber2, size1, size2); } int main() { @@ -74,6 +103,7 @@ int main() { printf("%s\n", " ! "); number2 = scanOne(); } + toBinary(number1, number2); } From 7c6aa236f4e98697406f76aadb15c8458958a02b Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 1 Oct 2022 21:26:04 +0300 Subject: [PATCH 07/11] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BA=D1=80=D0=BE=D0=BC=D0=B5=20=D1=81=D0=BB=D1=83?= =?UTF-8?q?=D1=87=D0=B8=D1=8F,=20=D0=BA=D0=BE=D0=B3=D0=B4=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=20=D0=B2=D0=B2=D0=BE=D0=B4=D0=B8=D1=82=20=D0=BE=D1=82?= =?UTF-8?q?=D1=80=D0=B8=D1=86=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE?= =?UTF-8?q?=D0=B5=20=D0=B8=20=D0=BF=D0=BE=D0=BB=D0=BE=D0=B6=D0=B8=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5=20=D1=87=D0=B8=D1=81=D0=BB?= =?UTF-8?q?=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryNumbers/BinaryNumbers/main.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c index 6171962..8984eec 100644 --- a/BinaryNumbers/BinaryNumbers/main.c +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -6,6 +6,19 @@ int scanOne(); void print(int number); +void binaryToDecimal(bool *binaryNumber) +{ + int multiplier = 1; + int number = 0; + for (int i = 13; i > 0; --i) { + number += multiplier * binaryNumber[i]; + multiplier = multiplier << 1; + } + if (binaryNumber[0] == 1) { + number = -number; + } + printf("%d", number); +} int sizeBinary(int number) { int size = 0; while (number) { @@ -15,7 +28,7 @@ int sizeBinary(int number) { return size; } -void translateDecToBin(bool *binaryNumber, int size, int number) { +void translateDecimalToBinary(bool *binaryNumber, int size, int number) { for (int i = 12; i >= 13 - size; --i) { binaryNumber[i] = (number & 1); number = number >> 1; @@ -37,6 +50,7 @@ void sumToBinary(bool *binaryNumber1, bool *binaryNumber2, int size1, int size2) int size3 = 0; while (i >= 0) { + //if ((!binaryNumber1[0] && !binaryNumber2[0]) || (binaryNumber1[0] && binaryNumber2[0])){ if (binaryNumber1[i] && binaryNumber2[i] && !pastSum) { binaryNumber3[i + 1] = false; } else if (!binaryNumber1[i] && binaryNumber2[i] && pastSum) { @@ -62,6 +76,7 @@ void sumToBinary(bool *binaryNumber1, bool *binaryNumber2, int size1, int size2) } printArrayBinary(binaryNumber3, size3, 14); + binaryToDecimal(binaryNumber3); } void toBinary(int number1, int number2) { @@ -72,21 +87,12 @@ void toBinary(int number1, int number2) { bool binaryNumber1[13] = {false}; bool binaryNumber2[13] = {false}; - translateDecToBin(binaryNumber1, size1, number1); - translateDecToBin(binaryNumber2, size2, number2); + translateDecimalToBinary(binaryNumber1, size1, number1); + translateDecimalToBinary(binaryNumber2, size2, number2); printArrayBinary(binaryNumber1, size1, 13); printArrayBinary(binaryNumber2, size2, 13); - for (int i = 0; i < 13; ++i) { - printf("%d", binaryNumber1[i]); - } - printf("\n"); - for (int i = 0; i < 13; ++i) { - printf("%d", binaryNumber2[i]); - } - printf("\n"); - sumToBinary(binaryNumber1, binaryNumber2, size1, size2); } From c61e61a50bc66ca23990a7c095310143bb68d2a0 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 1 Oct 2022 22:38:50 +0300 Subject: [PATCH 08/11] =?UTF-8?q?=D0=9F=D0=BE=D1=84=D0=B8=D0=BA=D1=81?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B1=D0=BB=D0=B5=D0=BC=D1=83?= =?UTF-8?q?=20=D1=81=D0=BE=20=D0=B7=D0=BD=D0=B0=D0=BA=D0=BE=D0=BC=20=D0=B2?= =?UTF-8?q?=2080=20=D0=B8=2081=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B5,=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D0=BE=D0=B6=D0=B8=D1=82=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D1=87=D0=B8=D1=81=D0=BB=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryNumbers/BinaryNumbers/main.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c index 8984eec..72d5782 100644 --- a/BinaryNumbers/BinaryNumbers/main.c +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -14,8 +14,9 @@ void binaryToDecimal(bool *binaryNumber) number += multiplier * binaryNumber[i]; multiplier = multiplier << 1; } - if (binaryNumber[0] == 1) { - number = -number; + + if (number >= 4096) { + number = number - 4096; } printf("%d", number); } @@ -50,23 +51,19 @@ void sumToBinary(bool *binaryNumber1, bool *binaryNumber2, int size1, int size2) int size3 = 0; while (i >= 0) { - //if ((!binaryNumber1[0] && !binaryNumber2[0]) || (binaryNumber1[0] && binaryNumber2[0])){ - if (binaryNumber1[i] && binaryNumber2[i] && !pastSum) { - binaryNumber3[i + 1] = false; - } else if (!binaryNumber1[i] && binaryNumber2[i] && pastSum) { - binaryNumber3[i + 1] = false; - } else if (binaryNumber1[i] && !binaryNumber2[i] && pastSum) { + if (binaryNumber1[i] && binaryNumber2[i] && !pastSum || !binaryNumber1[i] && binaryNumber2[i] && pastSum || binaryNumber1[i] && !binaryNumber2[i] && pastSum) { binaryNumber3[i + 1] = false; + pastSum = true; + } else if (binaryNumber1[i] && binaryNumber2[i] && pastSum) { + binaryNumber3[i + 1] = binaryNumber1[i] + binaryNumber2[i] + pastSum; + pastSum = true; } else { binaryNumber3[i + 1] = binaryNumber1[i] + binaryNumber2[i] + pastSum; + pastSum = false; } if (binaryNumber3[i + 1]) { size3 = 14 - i - 1; } - pastSum = false; - if (binaryNumber1[i] && binaryNumber2[i]) { - pastSum = true; - } --i; } @@ -80,8 +77,8 @@ void sumToBinary(bool *binaryNumber1, bool *binaryNumber2, int size1, int size2) } void toBinary(int number1, int number2) { - number1 = number1 < 0 ? 4096 - number1 : number1; - number2 = number2 < 0 ? 4096 - number2 : number2; + number1 = number1 < 0 ? 4096 + number1 : number1; + number2 = number2 < 0 ? 4096 + number2 : number2; int size1 = sizeBinary(number1); int size2 = sizeBinary(number2); bool binaryNumber1[13] = {false}; From b6dabe1c695adf81e84a66aa337de986f1520714 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 1 Oct 2022 23:38:24 +0300 Subject: [PATCH 09/11] =?UTF-8?q?=D0=9D=D0=B0=D0=BA=D0=BE=D0=BD=D0=B5?= =?UTF-8?q?=D1=86-=D1=82=D0=BE=20=D0=BF=D0=BE=D1=84=D0=B8=D0=BA=D1=88?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B1=D0=B0=D0=B3=D0=B8,=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=B3=D0=B4=D0=B0=20=D1=87=D0=B8=D1=81=D0=BB=D0=B0=D0=BC=20?= =?UTF-8?q?=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=B5=203072=20=D0=B4=D0=B0?= =?UTF-8?q?=D0=B2=D0=B0=D0=BB=D0=B8=20=D0=BE=D1=82=D1=80=D0=B8=D1=86=D0=B0?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5=20=D0=B7=D0=BD=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryNumbers/BinaryNumbers/main.c | 36 +++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c index 72d5782..d41c50a 100644 --- a/BinaryNumbers/BinaryNumbers/main.c +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -10,12 +10,12 @@ void binaryToDecimal(bool *binaryNumber) { int multiplier = 1; int number = 0; - for (int i = 13; i > 0; --i) { + for (int i = 11; i >= 0; --i) { number += multiplier * binaryNumber[i]; multiplier = multiplier << 1; } - - if (number >= 4096) { + + if (binaryNumber[0]) { number = number - 4096; } printf("%d", number); @@ -30,7 +30,7 @@ int sizeBinary(int number) { } void translateDecimalToBinary(bool *binaryNumber, int size, int number) { - for (int i = 12; i >= 13 - size; --i) { + for (int i = 11; i >= 12 - size; --i) { binaryNumber[i] = (number & 1); number = number >> 1; } @@ -44,35 +44,35 @@ void printArrayBinary(bool *binaryNumber, int size, int maxPow2) { } void sumToBinary(bool *binaryNumber1, bool *binaryNumber2, int size1, int size2) { - bool binaryNumber3[14] = {false}; + bool binaryNumber3[12] = {false}; bool pastSum = false; - int i = 12; + int i = 11; int size3 = 0; while (i >= 0) { if (binaryNumber1[i] && binaryNumber2[i] && !pastSum || !binaryNumber1[i] && binaryNumber2[i] && pastSum || binaryNumber1[i] && !binaryNumber2[i] && pastSum) { - binaryNumber3[i + 1] = false; + binaryNumber3[i] = false; pastSum = true; } else if (binaryNumber1[i] && binaryNumber2[i] && pastSum) { - binaryNumber3[i + 1] = binaryNumber1[i] + binaryNumber2[i] + pastSum; + binaryNumber3[i] = binaryNumber1[i] + binaryNumber2[i] + pastSum; pastSum = true; } else { - binaryNumber3[i + 1] = binaryNumber1[i] + binaryNumber2[i] + pastSum; + binaryNumber3[i] = binaryNumber1[i] + binaryNumber2[i] + pastSum; pastSum = false; } - if (binaryNumber3[i + 1]) { - size3 = 14 - i - 1; + if (binaryNumber3[i]) { + size3 = 12 - i; } --i; } if (binaryNumber1[0] && binaryNumber2[0]) { binaryNumber3[0] = true; - size3 = 14; + size3 = 12; } - printArrayBinary(binaryNumber3, size3, 14); + printArrayBinary(binaryNumber3, size3, 12); binaryToDecimal(binaryNumber3); } @@ -81,14 +81,14 @@ void toBinary(int number1, int number2) { number2 = number2 < 0 ? 4096 + number2 : number2; int size1 = sizeBinary(number1); int size2 = sizeBinary(number2); - bool binaryNumber1[13] = {false}; - bool binaryNumber2[13] = {false}; - + bool binaryNumber1[12] = {false}; + bool binaryNumber2[12] = {false}; + translateDecimalToBinary(binaryNumber1, size1, number1); translateDecimalToBinary(binaryNumber2, size2, number2); - printArrayBinary(binaryNumber1, size1, 13); - printArrayBinary(binaryNumber2, size2, 13); + printArrayBinary(binaryNumber1, size1, 12); + printArrayBinary(binaryNumber2, size2, 12); sumToBinary(binaryNumber1, binaryNumber2, size1, size2); } From cb3dd1fea19f188fadee1503dd3d700abe5eae11 Mon Sep 17 00:00:00 2001 From: Artem Date: Sun, 2 Oct 2022 00:20:48 +0300 Subject: [PATCH 10/11] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB=20=D0=B2=D1=81=D1=91=20=D0=BF=D0=BE=D0=B4=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B,=20=D1=87=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=20=D0=BD=D0=B5=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B8?= =?UTF-8?q?=D0=BB=D0=BE=20=D0=BD=D0=B0=20=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=BC=D0=B5=D0=B6=D1=83=D1=82=D0=BE=D1=87?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D1=8B=20=D0=B2=D0=BE=20=D0=B2=D1=80=D0=B5=D0=BC?= =?UTF-8?q?=D1=8F=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryNumbers/BinaryNumbers/main.c | 58 ++++++++++++++---------------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c index d41c50a..ea94f82 100644 --- a/BinaryNumbers/BinaryNumbers/main.c +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -6,7 +6,7 @@ int scanOne(); void print(int number); -void binaryToDecimal(bool *binaryNumber) +int binaryToDecimal(bool *binaryNumber) { int multiplier = 1; int number = 0; @@ -15,10 +15,7 @@ void binaryToDecimal(bool *binaryNumber) multiplier = multiplier << 1; } - if (binaryNumber[0]) { - number = number - 4096; - } - printf("%d", number); + return binaryNumber[0] ? number - 4096 : number; } int sizeBinary(int number) { int size = 0; @@ -43,9 +40,7 @@ void printArrayBinary(bool *binaryNumber, int size, int maxPow2) { printf("\n"); } -void sumToBinary(bool *binaryNumber1, bool *binaryNumber2, int size1, int size2) { - bool binaryNumber3[12] = {false}; - +void sumToBinary(bool *binaryNumber1, bool *binaryNumber2, bool binaryNumber3[], int size1, int size2) { bool pastSum = false; int i = 11; int size3 = 0; @@ -71,43 +66,44 @@ void sumToBinary(bool *binaryNumber1, bool *binaryNumber2, int size1, int size2) binaryNumber3[0] = true; size3 = 12; } - - printArrayBinary(binaryNumber3, size3, 12); - binaryToDecimal(binaryNumber3); } -void toBinary(int number1, int number2) { - number1 = number1 < 0 ? 4096 + number1 : number1; - number2 = number2 < 0 ? 4096 + number2 : number2; - int size1 = sizeBinary(number1); - int size2 = sizeBinary(number2); - bool binaryNumber1[12] = {false}; - bool binaryNumber2[12] = {false}; - - translateDecimalToBinary(binaryNumber1, size1, number1); - translateDecimalToBinary(binaryNumber2, size2, number2); - - printArrayBinary(binaryNumber1, size1, 12); - printArrayBinary(binaryNumber2, size2, 12); - - sumToBinary(binaryNumber1, binaryNumber2, size1, size2); +int toChangeNegativeNumbers(int number) { + return number < 0 ? 4096 + number : number; } int main() { setlocale(LC_ALL, "RUS"); - printf("%s", " , . 4096 \n"); + printf("%s", " , . 2048 \n"); int number1 = scanOne(); - while (abs(number1) >= 4096) { + while (abs(number1) >= 2048) { printf("%s\n", " ! "); number1 = scanOne(); } int number2 = scanOne(); - while (abs(number2) >= 4096) { + while (abs(number2) >= 2048 || abs(number1 + number2) >= 2048) { printf("%s\n", " ! "); + number1 = scanOne(); number2 = scanOne(); } - - toBinary(number1, number2); + number1 = toChangeNegativeNumbers(number1); + number2 = toChangeNegativeNumbers(number2); + int size1 = sizeBinary(number1); + int size2 = sizeBinary(number2); + bool *binaryNumber1 = (bool*)calloc(12, sizeof(int)); + bool *binaryNumber2 = (bool*)calloc(12, sizeof(int)); + translateDecimalToBinary(binaryNumber1, size1, number1); + translateDecimalToBinary(binaryNumber2, size2, number2); + printArrayBinary(binaryNumber1, size1, 12); + printArrayBinary(binaryNumber2, size2, 12); + int size3 = 12; + bool *binaryNumber3 = (bool*)calloc(12, sizeof(int)); + sumToBinary(binaryNumber1, binaryNumber2,binaryNumber3, size1, size2); + printArrayBinary(binaryNumber3, size3, 12); + printf("%d", binaryToDecimal(binaryNumber3)); + free(binaryNumber1); + free(binaryNumber2); + free(binaryNumber3); } void print(int number) { From c53fc31ffa37a7832317e9e669f49bdf65e84bfd Mon Sep 17 00:00:00 2001 From: Artem Date: Sun, 2 Oct 2022 00:32:45 +0300 Subject: [PATCH 11/11] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryNumbers/BinaryNumbers/main.c | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/BinaryNumbers/BinaryNumbers/main.c b/BinaryNumbers/BinaryNumbers/main.c index ea94f82..cf184dc 100644 --- a/BinaryNumbers/BinaryNumbers/main.c +++ b/BinaryNumbers/BinaryNumbers/main.c @@ -72,8 +72,50 @@ int toChangeNegativeNumbers(int number) { return number < 0 ? 4096 + number : number; } +bool testStandart(void) { + int size1 = sizeBinary(12); + int size2 = sizeBinary(13); + bool* binaryNumber1 = (bool*)calloc(12, sizeof(int)); + bool* binaryNumber2 = (bool*)calloc(12, sizeof(int)); + translateDecimalToBinary(binaryNumber1, size1, 12); + translateDecimalToBinary(binaryNumber2, size2, 13); + bool* binaryNumber3 = (bool*)calloc(12, sizeof(int)); + sumToBinary(binaryNumber1, binaryNumber2, binaryNumber3, size1, size2); + free(binaryNumber1); + free(binaryNumber2); + int result = binaryToDecimal(binaryNumber3); + free(binaryNumber3); + return result == 25; +} + +bool testNotStandart() { + int number1 = toChangeNegativeNumbers(1001); + int number2 = toChangeNegativeNumbers(-1002); + int size1 = sizeBinary(number1); + int size2 = sizeBinary(number2); + bool* binaryNumber1 = (bool*)calloc(12, sizeof(int)); + bool* binaryNumber2 = (bool*)calloc(12, sizeof(int)); + translateDecimalToBinary(binaryNumber1, size1, number1); + translateDecimalToBinary(binaryNumber2, size2, number2); + bool* binaryNumber3 = (bool*)calloc(12, sizeof(int)); + sumToBinary(binaryNumber1, binaryNumber2, binaryNumber3, size1, size2); + free(binaryNumber1); + free(binaryNumber2); + int result = binaryToDecimal(binaryNumber3); + free(binaryNumber3); + return result == -1; +} + int main() { setlocale(LC_ALL, "RUS"); + + if (!testStandart() || !testNotStandart()) { + printf("%s", " \n"); + return 0; + } else { + printf("%s", " \n"); + } + printf("%s", " , . 2048 \n"); int number1 = scanOne(); while (abs(number1) >= 2048) {