Browse Source

分支9完成题目,做了单元测试

master
linyongji 4 years ago
parent
commit
875f4f3dc7
10 changed files with 97 additions and 2 deletions
  1. +4
    -0
      .gitignore
  2. BIN
      Alogrithm/.vs/Alogrithm/v16/.suo
  3. +3
    -0
      Alogrithm/Alogrithm/Alogrithm.vcxproj
  4. +9
    -0
      Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
  5. +20
    -0
      Alogrithm/Alogrithm/config/9_AddBinary.ini
  6. +6
    -0
      Alogrithm/Alogrithm/include/9_AddBinary.h
  7. +32
    -0
      Alogrithm/Alogrithm/src/9_AddBinary.cpp
  8. +21
    -1
      Alogrithm/UnitTest/UnitTest.cpp
  9. +1
    -1
      Alogrithm/UnitTest/UnitTest.vcxproj
  10. +1
    -0
      Alogrithm/UnitTest/pch.h

+ 4
- 0
.gitignore View File

@@ -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

BIN
Alogrithm/.vs/Alogrithm/v16/.suo View File


+ 3
- 0
Alogrithm/Alogrithm/Alogrithm.vcxproj View File

@@ -148,6 +148,7 @@
<ClCompile Include="src\6_ContainsDuplicate.cpp" />
<ClCompile Include="src\7_MaxDepth.cpp" />
<ClCompile Include="src\8_HammingWeight.cpp" />
<ClCompile Include="src\9_AddBinary.cpp" />
<ClCompile Include="src\main.cpp" />
</ItemGroup>
<ItemGroup>
@@ -159,6 +160,7 @@
<ClInclude Include="include\6_ContainsDuplicate.h" />
<ClInclude Include="include\7_MaxDepth.h" />
<ClInclude Include="include\8_HammingWeight.h" />
<ClInclude Include="include\9_AddBinary.h" />
</ItemGroup>
<ItemGroup>
<None Include="config\1_ContainsNearbyDuplicate.ini" />
@@ -169,6 +171,7 @@
<None Include="config\6_ContainsDuplicate.ini" />
<None Include="config\7_MaxDepth.ini" />
<None Include="config\8_HammingWeight.ini" />
<None Include="config\9_AddBinary.ini" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">


+ 9
- 0
Alogrithm/Alogrithm/Alogrithm.vcxproj.filters View File

@@ -51,6 +51,9 @@
<ClCompile Include="src\8_HammingWeight.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
<ClCompile Include="src\9_AddBinary.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="include\2_ExcelSheetColumnTitle.h">
@@ -77,6 +80,9 @@
<ClInclude Include="include\8_HammingWeight.h">
<Filter>头文件\include</Filter>
</ClInclude>
<ClInclude Include="include\9_AddBinary.h">
<Filter>头文件\include</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="config\3_bool IsUgly.ini">
@@ -103,5 +109,8 @@
<None Include="config\8_HammingWeight.ini">
<Filter>资源文件\config</Filter>
</None>
<None Include="config\9_AddBinary.ini">
<Filter>资源文件\config</Filter>
</None>
</ItemGroup>
</Project>

+ 20
- 0
Alogrithm/Alogrithm/config/9_AddBinary.ini View File

@@ -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

+ 6
- 0
Alogrithm/Alogrithm/include/9_AddBinary.h View File

@@ -0,0 +1,6 @@
#pragma once
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char* AddBinary(char* a, char* b);

+ 32
- 0
Alogrithm/Alogrithm/src/9_AddBinary.cpp View File

@@ -0,0 +1,32 @@
#include"../include/9_AddBinary.h"

char* AddBinary(char* a, char* b)
{
int len_a = strlen(a) - 1;//存放字符串a的长度
int len_b = strlen(b) - 1;//存放字符串b的长度
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;//sum用来保存a[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=2或3时需要进位,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);
}

+ 21
- 1
Alogrithm/UnitTest/UnitTest.cpp View File

@@ -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);
}
}
};
}

+ 1
- 1
Alogrithm/UnitTest/UnitTest.vcxproj View File

@@ -103,7 +103,7 @@
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<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;%(AdditionalDependencies)</AdditionalDependencies>
<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)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">


+ 1
- 0
Alogrithm/UnitTest/pch.h View File

@@ -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);


Loading…
Cancel
Save