簡體   English   中英

C ++中的Biginteger加法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM