diff --git a/.gitignore b/.gitignore index bb5db3f..2a59ede 100644 --- a/.gitignore +++ b/.gitignore @@ -134,3 +134,10 @@ Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/95ff4e0647685c25/11_CANWINNIM.ipch Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/ec9d75c6b219f9bb/12_ISVALID.ipch Alogrithm/Alogrithm/Debug/12_IsValid.obj Alogrithm/UnitTest/Debug/UnitTest.tlog/link.16692.delete.1.tlog +Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/63abd4c80f702728/13_MYATOI.ipch +Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/d298e620e7fd15b3/13_MYATOI.ipch +Alogrithm/TestResults/4eb333a8-8da4-4120-8568-f8294d8da0c1/林_MI-1 2021-01-19 18_05_51.coverage +Alogrithm/TestResults/782f01b2-9860-4fcb-a2b1-8792206abbd6/林_MI-1 2021-01-19 18_03_16.coverage +Alogrithm/Alogrithm/Debug/13_MyAtoi.obj +Alogrithm/TestResults/dfc574b2-675e-41d0-bedb-4a260e23f2d6/林_MI-1 2021-01-19 18_06_47.coverage +Alogrithm/TestResults/e0c4d06b-b5b3-4e26-97b5-dcbc2f1cb01b/林_MI-1 2021-01-19 13_46_44.coverage diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo index 37400b8..689f157 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 835e13c..11cc8c9 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj @@ -85,7 +85,7 @@ Level3 - true + false WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) false @@ -143,6 +143,7 @@ + @@ -158,6 +159,7 @@ + @@ -172,6 +174,7 @@ + diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters index 872f03a..e3bc106 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters @@ -63,6 +63,9 @@ 源文件\src + + 源文件\src + @@ -101,6 +104,9 @@ 头文件\include + + 头文件\include + @@ -139,5 +145,8 @@ 资源文件\config + + 资源文件\config + \ No newline at end of file diff --git a/Alogrithm/Alogrithm/config/13_MyAtoi.ini b/Alogrithm/Alogrithm/config/13_MyAtoi.ini new file mode 100644 index 0000000..a0f27c6 --- /dev/null +++ b/Alogrithm/Alogrithm/config/13_MyAtoi.ini @@ -0,0 +1,33 @@ +[Test1] +input=42 +output=42 +[Test2] +input= -42 +output=-42 +[Test3] +input=4193 with words +output=4193 +[Test4] +input=words and 987 +output=0 +[Test5] +input=-91283472332 +output=-2147483648 +[Test6] +input=2147483647 +output=2147483647 +[Test7] +input=2147483648 +output=2147483647 +[Test8] +input=-2147483648 +output=-21474836478 +[Test9] +input=-2147483649 +output=-21474836478 +[Test10] +input=+1231 +output=1231 +[Test11] +input= 1231 +output=1231 \ No newline at end of file diff --git a/Alogrithm/Alogrithm/include/13_MyAtoi.h b/Alogrithm/Alogrithm/include/13_MyAtoi.h new file mode 100644 index 0000000..d852926 --- /dev/null +++ b/Alogrithm/Alogrithm/include/13_MyAtoi.h @@ -0,0 +1,3 @@ +#pragma once +#include +int MyAtoi(char* s); diff --git a/Alogrithm/Alogrithm/src/13_MyAtoi.cpp b/Alogrithm/Alogrithm/src/13_MyAtoi.cpp new file mode 100644 index 0000000..f80f3b7 --- /dev/null +++ b/Alogrithm/Alogrithm/src/13_MyAtoi.cpp @@ -0,0 +1,35 @@ +#include "../include/13_MyAtoi.h" + +int MyAtoi(char* s) { + int Index = 0;//ַsΪ±ʹ + int flag = 1;//ű־λ>0ţ<0 + int ret = 0;//Ľֹ + while (s[Index] == ' ') {//õĿͷոַ + Index++; + } + if (s[Index] == '-') {//ȡţflagı + flag = -1; + Index++; + } + else if (s[Index] == '+') {//ȡţflagı + flag = 1; + Index++; + } + else if (s[Index] < '0' || s[Index] > '9') {//ַеĵһǿոַһЧַ + return 0; //ַΪջַհַʱĺҪת,ֱӷ0 + } + while ('0' <= s[Index] && s[Index] <= '9') {//0~9ֱַΪֹ + ret = ret * 10 + int(s[Index] - '0');//ѱĽת + if (ret*10/10 != ret && flag > 0) {//retȳ10ٳ10жǷԭ + return INT_MAX; //˵жDzINT_MAX + } + else if (ret * 10 / 10 != ret && flag < 0) {//ǸINT_MIN + return INT_MIN; + } + Index++; + } + if (flag < 0) {//whileûзֵ˵ûӦֵ + return 0 - ret; + } + return ret; +} \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/main.cpp b/Alogrithm/Alogrithm/src/main.cpp index 89788bc..82f9ada 100644 --- a/Alogrithm/Alogrithm/src/main.cpp +++ b/Alogrithm/Alogrithm/src/main.cpp @@ -1,7 +1,9 @@ #include - +#include "../include/13_MyAtoi.h" int main() { - + char s[] = "2147483648"; + printf("%d\n", MyAtoi(s)); + //printf("%d\n", 2147483647+ 2147483649); return 0; } diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp index e89e3d4..34b3868 100644 --- a/Alogrithm/UnitTest/UnitTest.cpp +++ b/Alogrithm/UnitTest/UnitTest.cpp @@ -14,7 +14,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; #define FileName_10 "../Alogrithm/config/10_BinaryTreePaths.ini" #define FileName_11 "../Alogrithm/config/11_CanWinNim.ini" #define FileName_12 "../Alogrithm/config/12_IsValid.ini" - +#define FileName_13 "../Alogrithm/config/13_MyAtoi.ini" namespace UnitTest { @@ -236,4 +236,21 @@ namespace UnitTest } } }; + TEST_CLASS(UnitTest_13) + { + TEST_METHOD(TestMethode1) + { + char Section_Name[100][10] = { 0 }; + int Section_Count = CalcCount(100, Section_Name, FileName_13); + char input_char[1024] = { 0 }; + CString input, output; + for (int i = 0; i < Section_Count; i++) { + GetPrivateProfileString(Section_Name[i], "input", " ", input.GetBuffer(200), 200, FileName_13); + GetPrivateProfileString(Section_Name[i], "output", " ", output.GetBuffer(20), 20, FileName_13); + strcpy(input_char, input); + int nReal = MyAtoi(input_char); + Assert::AreEqual(nReal, _ttoi(output)); + } + } + }; } diff --git a/Alogrithm/UnitTest/UnitTest.vcxproj b/Alogrithm/UnitTest/UnitTest.vcxproj index 353548a..ddb070c 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;../Alogrithm/Debug/9_AddBinary.obj;../Alogrithm/Debug/10_BinaryTreePaths.obj;../Alogrithm/Debug/11_CanWinNim.obj;../Alogrithm/Debug/12_IsValid.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;../Alogrithm/Debug/10_BinaryTreePaths.obj;../Alogrithm/Debug/11_CanWinNim.obj;../Alogrithm/Debug/12_IsValid.obj;../Alogrithm/Debug/13_MyAtoi.obj;%(AdditionalDependencies) diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h index dbcae6d..3731bbb 100644 --- a/Alogrithm/UnitTest/pch.h +++ b/Alogrithm/UnitTest/pch.h @@ -25,6 +25,7 @@ #include"../Alogrithm/include/10_BinaryTreePaths.h" #include"../Alogrithm/include/11_CanWinNim.h" #include"../Alogrithm/include/12_IsValid.h" +#include"../Alogrithm/include/13_MyAtoi.h" int CalcCount(int n, char(*str)[10],const char *FileName);