栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++实现两个超大的字符数字相加的算法的代码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++实现两个超大的字符数字相加的算法的代码


如下资料是关于C++实现两个超大的字符数字相加的算法的代码。

#include

#include

#include

using namespace std;

void deleteLeadingZeros(string& num){

    if(num[0] == '0'){

        unsigned int strtCpyIndex = 0;

        strtCpyIndex = num.find_first_not_of("0");

        string temp = num.substr(strtCpyIndex);

        num = temp;

    }

}

void equalizeLength(string& num1 , string& num2, char pad = '0'){

    if(num1.size() < num2.size()){

        unsigned int diff = num2.size() - num1.size();

        string temp;

            temp += pad;

        temp += num1;

        num1 = temp;

    }

    else if(num2.size() < num1.size()){

        unsigned int diff = num1.size() - num2.size();

        string temp;

            temp += pad;

        temp += num2;

        num2 = temp;

    }

}

string addLargeNumbers(string num1, string num2)

{   

    if(num1.empty())

        return num2;

    else if(num2.empty())

        return num1;

    stack addResult; 

    string returnResult = "";   

    deleteLeadingZeros(num1);

    deleteLeadingZeros(num2);

    equalizeLength(num1,num2);

    int lastAddElem = num1.size()- 1;

    bool hasCarry = false;

    for(int i = lastAddElem; i >= 0; --i)

    {

        if(result < 10 && !hasCarry)

            addResult.push(result);

        else

        {           

            if(hasCarry){

                hasCarry = result < 10 ? false : true;

                addResult.push(result%10);

            }

            else

            {

                hasCarry = true;

                addResult.push(result % 10 );

            }

        }

    }

    if(hasCarry)

        addResult.push(result/10);

    while(addResult.size()){

        returnResult += (addResult.top() + '0');        

        addResult.pop();

    }

    return returnResult;

}

int main()

{       

    string num1,num2;

    while(true){

        cout<<"Enter 2 integer for addition : ";

        cin >> num1 >> num2;

        cout <

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/232365.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号