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