帮我写一个能实现大数相加的类
时间: 2023-05-26 08:01:51 浏览: 136
以下是一个能够实现大数相加的类的示例代码(使用了字符串进行存储和操作大数):
```
class BigNumAdder {
public:
string add(string num1, string num2) {
int len1 = num1.length();
int len2 = num2.length();
if (len1 > len2) {
num2 = string(len1 - len2, '0') + num2;
} else {
num1 = string(len2 - len1, '0') + num1;
}
int carry = 0;
string result = "";
for (int i = num1.length() - 1; i >= 0; i--) {
int sum = num1[i] - '0' + num2[i] - '0' + carry;
result = to_string(sum % 10) + result;
carry = sum / 10;
}
if (carry > 0) {
result = to_string(carry) + result;
}
return result;
}
};
```
在这个类中,我们定义了一个 add 方法,它接收两个大数的字符串表示形式作为参数,然后返回它们的和的字符串表示形式。
在内部实现中,我们首先使用了字符串的长度将这两个字符串填充到相同的长度上,然后从每个字符串的末尾开始遍历并相加每一位,同时也需要处理进位的情况。最后将结果反转过来返回即可。
以下是一个使用这个类进行大数相加的示例:
```
BigNumAdder adder;
string num1 = "123456789012345678901234567890";
string num2 = "987654321098765432109876543210";
cout << adder.add(num1, num2) << endl; // 输出 1111111111111111111111111111110
```
希望对你有所帮助!
阅读全文