C++ 中的大整数加法
Biginteger Addition in C++
我正在尝试将两个大整数相加。这是我做的一个功能。 s1
是其中较大的字符串。在传递函数参数期间,我将考虑字符串长度。该代码适用于除 10^(n) 以外的所有值。因此,对于 100 + 2,它显示 o/p 为 2。对于其他 10 次幂的情况也类似。当我进行一些挖掘时,我注意到 for 循环在这些情况下只运行一次。因此 s1.length()
报告长度为 1。我该如何解决?
void addBigInteger (string s1,string s2) {
string str3;
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
int temp = 0,carry=0,i;
for (i=0;i<s1.length();i++) {
if ((i+1) > s2.length())
s2[i] = '0';
temp = s1[i]-'0'+s2[i]-'0'+carry;
str3[i] = temp%10 + '0';
carry = temp/10;
}
while (carry!=0) {
str3[i++] = carry%10 + '0';
carry = carry/10;
}
for (i;i>=0;i--) {
cout << str3[i];
}
cout << endl;
}
您需要使用 str2.push_back('0')
来附加字符,而不是使用越界 i
分配 str2[i]
。 std::string::operator[]
不"grow"字符串中的内部存储。
我正在尝试将两个大整数相加。这是我做的一个功能。 s1
是其中较大的字符串。在传递函数参数期间,我将考虑字符串长度。该代码适用于除 10^(n) 以外的所有值。因此,对于 100 + 2,它显示 o/p 为 2。对于其他 10 次幂的情况也类似。当我进行一些挖掘时,我注意到 for 循环在这些情况下只运行一次。因此 s1.length()
报告长度为 1。我该如何解决?
void addBigInteger (string s1,string s2) {
string str3;
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
int temp = 0,carry=0,i;
for (i=0;i<s1.length();i++) {
if ((i+1) > s2.length())
s2[i] = '0';
temp = s1[i]-'0'+s2[i]-'0'+carry;
str3[i] = temp%10 + '0';
carry = temp/10;
}
while (carry!=0) {
str3[i++] = carry%10 + '0';
carry = carry/10;
}
for (i;i>=0;i--) {
cout << str3[i];
}
cout << endl;
}
您需要使用 str2.push_back('0')
来附加字符,而不是使用越界 i
分配 str2[i]
。 std::string::operator[]
不"grow"字符串中的内部存储。