摘要:本文主要向大家介绍了 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+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号