본문 바로가기

Program Tip

정수로 표현하지 못하는 큰수를 더하기

반응형
int main()
	{
		//	calc add
		std::string a = "1000";
		std::string b = "99000";
		std::string c = "100000";
		std::string result;
		TRACE("a [%s] + b [%s]", a.c_str(), b.c_str());

		int a_len = a.length();
		int b_len = b.length();
		int len = a_len > b_len ? a_len : b_len;
		std::reverse(a.begin(), a.end());
		std::reverse(b.begin(), b.end());

		
		char sum = 0;
		char ai = 0;
		char bi = 0;
		char up = 0;
		char rem = 0;
		for (size_t i = 0; i < len; i++)
		{
			ai = 0;
			bi = 0;
			sum = 0;

			if (i < a_len)
			{
				auto aa = a.at(i);
				//ai = atoi(&a.at(i));
				ai = atoi(&aa);
			}
			if (i < b_len)
			{
				auto bb = b.at(i);
				bi = atoi(&bb);
				//bi = atoi(&b.at(i));
			}
			sum = ai + bi + up;
			rem = sum % 10;
			result.push_back(rem + '0');

			if (sum > 9)
			{
				up = 1;
			}
			else
			{
				up = 0;
			}
		}
		if (up == 1)
		{
			result.push_back(up + '0');
		}

		std::reverse(result.begin(), result.end());
		TRACE("result : [%s]", result.c_str());

		//	calc end

		
	}
반응형