[英]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')
附加字符,而不是為str2[i]
分配超出范圍的i
。 std::string::operator[]
不會“增長”字符串中的內部存儲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.