diff --git a/.gitignore b/.gitignore index 056950b..629070a 100644 --- a/.gitignore +++ b/.gitignore @@ -110,3 +110,7 @@ Alogrithm/.vs/Alogrithm/v16/TestStore/3/001.testlog Alogrithm/Alogrithm/Debug/7_MaxDepth.obj Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/5507929c4351e38d/8_HAMMINGWEIGHT.ipch Alogrithm/Alogrithm/Debug/8_HammingWeight.obj +Alogrithm/.vs/Alogrithm/v16/TestStore/3/002.testlog +Alogrithm/Alogrithm/Debug/9_AddBinary.obj +Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/27a527fda8b54c6b/9_ADDBINARY.ipch +Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/d00489e06883ba57/9_ ADDBINARY.ipch diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo index 19cc6de..f1e9981 100644 Binary files a/Alogrithm/.vs/Alogrithm/v16/.suo and b/Alogrithm/.vs/Alogrithm/v16/.suo differ diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj b/Alogrithm/Alogrithm/Alogrithm.vcxproj index 2f9ea17..847bf41 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj @@ -148,6 +148,7 @@ + @@ -159,6 +160,7 @@ + @@ -169,6 +171,7 @@ + diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters index 4b6745b..61f2f35 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters @@ -51,6 +51,9 @@ 源文件\src + + 源文件\src + @@ -77,6 +80,9 @@ 头文件\include + + 头文件\include + @@ -103,5 +109,8 @@ 资源文件\config + + 资源文件\config + \ No newline at end of file diff --git a/Alogrithm/Alogrithm/config/9_AddBinary.ini b/Alogrithm/Alogrithm/config/9_AddBinary.ini new file mode 100644 index 0000000..0342992 --- /dev/null +++ b/Alogrithm/Alogrithm/config/9_AddBinary.ini @@ -0,0 +1,20 @@ +[TEST1] +input1=11 +input2=1 +output=100 +[TEST2] +input1=1100 +input2=11 +output=1111 +[TEST3] +input1=1100011 +input2=1001 +output=1101100 +[TEST4] +input1=1100011 +input2=1000 +output=1101011 +[TEST5] +input1=110001100 +input2=11 +output=110001111 \ No newline at end of file diff --git a/Alogrithm/Alogrithm/include/9_AddBinary.h b/Alogrithm/Alogrithm/include/9_AddBinary.h new file mode 100644 index 0000000..1382b1a --- /dev/null +++ b/Alogrithm/Alogrithm/include/9_AddBinary.h @@ -0,0 +1,6 @@ +#pragma once +#include +#include +#include + +char* AddBinary(char* a, char* b); \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/9_AddBinary.cpp b/Alogrithm/Alogrithm/src/9_AddBinary.cpp new file mode 100644 index 0000000..fedc668 --- /dev/null +++ b/Alogrithm/Alogrithm/src/9_AddBinary.cpp @@ -0,0 +1,32 @@ +#include"../include/9_AddBinary.h" + +char* AddBinary(char* a, char* b) +{ + int len_a = strlen(a) - 1;//ַaij + int len_b = strlen(b) - 1;//ַbij + int carry = 0;//λ־ + int len = len_a > len_b ? len_a : len_b;//ȡַгȽϳһ + + char* pstr = (char*)malloc(sizeof(char) * (len + 3));//һָΪֵռΪ˷ֹнλַβ־\0 + if (NULL == pstr) + return NULL; + pstr[len + 2] = '\0';//ַĩβ\0 + len = len + 1; + while ((len_a >= 0) || (len_b >= 0)) {//ֻҪַһûַ꣬ĩβʼ + int sum = carry;//suma[len_a]b[len_b]carryӵĽsumΪ0,1,2,3 + sum += (len_a >= 0 ? a[len_a] - '0' : 0); + sum += (len_b >= 0 ? b[len_b] - '0' : 0); + carry = sum / 2;//sum=23ʱҪλ2ʾa[a_len]b[b_len]Ҫλ3ʾһλҪλ + pstr[len] = '0' + sum % 2;//pstr[len]ֵ + len_a--, len_b--, len--; + } + //жҪҪǰ0 + if (carry == 0) { + return (pstr + 1);//ָһʾָƶλĻָָ0һλ + } + else { + pstr[0] = '1'; + return pstr; + } + //free(pstr); +} \ No newline at end of file diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp index 041ba31..aec922b 100644 --- a/Alogrithm/UnitTest/UnitTest.cpp +++ b/Alogrithm/UnitTest/UnitTest.cpp @@ -10,7 +10,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; #define FileName_6 "../Alogrithm/config/6_ContainsDuplicate.ini" #define FileName_7 "../Alogrithm/config/7_MaxDepth.ini" #define FileName_8 "../Alogrithm/config/8_HammingWeight.ini" - +#define FileName_9 "../Alogrithm/config/9_AddBinary.ini" namespace UnitTest @@ -150,4 +150,24 @@ namespace UnitTest } } }; + TEST_CLASS(UnitTest_9) + { + TEST_METHOD(TestMethode1) + { + char Section_Name[100][10] = { 0 }; + int Section_Count = CalcCount(100, Section_Name, FileName_9); + CString input1,input2, output; + for (int i = 0; i < Section_Count; i++) { + GetPrivateProfileString(Section_Name[i], "input1", " ", input1.GetBuffer(100), 100, FileName_9); + GetPrivateProfileString(Section_Name[i], "input2", " ", input2.GetBuffer(100), 100, FileName_9); + GetPrivateProfileString(Section_Name[i], "output", " ", output.GetBuffer(200), 200, FileName_9); + char p1[100]; + char p2[100]; + strcpy(p1, input1); + strcpy(p2, input2); + char* nReal = AddBinary(p1,p2); + Assert::AreEqual(nReal, output); + } + } + }; } diff --git a/Alogrithm/UnitTest/UnitTest.vcxproj b/Alogrithm/UnitTest/UnitTest.vcxproj index f6b117a..f96836e 100644 --- a/Alogrithm/UnitTest/UnitTest.vcxproj +++ b/Alogrithm/UnitTest/UnitTest.vcxproj @@ -103,7 +103,7 @@ Windows $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) DebugFull - ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;%(AdditionalDependencies) + ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;../Alogrithm/Debug/9_AddBinary.obj;%(AdditionalDependencies) diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h index accfddc..52a9d5c 100644 --- a/Alogrithm/UnitTest/pch.h +++ b/Alogrithm/UnitTest/pch.h @@ -21,6 +21,7 @@ #include"../Alogrithm/include/6_ContainsDuplicate.h" #include"../Alogrithm/include/7_MaxDepth.h" #include"../Alogrithm/include/8_HammingWeight.h" +#include"../Alogrithm/include/9_AddBinary.h" int CalcCount(int n, char(*str)[10],const char *FileName);