Program Tip
정수로 표현하지 못하는 큰수를 더하기
포레스트제이
2017. 11. 7. 17:35
반응형
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 }
반응형