大整数相加问题

#include <iostream>
#include <string>
/*project:两个大整数相加 
**@author:浅滩 
**data:2019.05.15 
*/ 
using namespace std;
void add(const string &,const string &);
int main()
{int n;
    
string str1,str2;    
cin>>str1>>str2;
add(str1,str2);
}

void add(const string &str1,const string &str2)
{
     
 int *num1=new int [str1.size()];
 int *num2=new int [str2.size()];
 int result_size=(str1.size()>str2.size()? str1.size():str2.size());
 int result[result_size];
 fill(result,(result+result_size),0);//初始化结果数组
 for(int i=0;i<str1.size();i++)//字符串到整数数组的转换 
 num1[i]=str1[i]-'0';    
 for(int i=0;i<str2.size();i++)
 num2[i]=str2[i]-'0';
 int s1=str1.size()-1,s2=str2.size()-1,k=(str1.size()>str2.size()? str1.size():str2.size())-1;
 while(s1>=0&&s2>=0)
 {
     result[k]=num1[s1]+num2[s2];
     k--;s1--;s2--;
 }

 while(s1>=0)
 {
     result[k]=num1[s1];
     k--;s1--;
 }
  while(s2>=0)
 {
     result[k]=num1[s2];
     k--;s2--;
 }
result_size=(str1.size()>str2.size()? str1.size():str2.size())-1;
 for(int i=result_size;i>0;i--)//从后向前进位 
 {
 result[i-1]+=result[i]/10;
 result[i]=result[i]%10;    
 }
 //cout<<result_size<<endl;
for(int i=0;i<=result_size;i++)
cout<<result[i];
    
}

猜你喜欢

转载自www.cnblogs.com/cstdio1/p/10885326.html