C/C++知识点之C++实现两个超大的字符数字相加的算法的代码
小标 2019-02-19 来源 : 阅读 713 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之C++实现两个超大的字符数字相加的算法的代码,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之C++实现两个超大的字符数字相加的算法的代码,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之C++实现两个超大的字符数字相加的算法的代码

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


#include <iostream>
#include <string>
#include <stack>

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<short> 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 <<num1 << "+" << num2 <<" = "<<addLargeNumbers(num1,num2)<<endl;
    }

}

   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程