大数加的程序但是运行发现有关问题。 不知道错在哪里了有好心人帮小弟我看下吗
大数加的程序但是运行发现问题。。 不知道错在哪里了有好心人帮我看下吗?
#include<iostream>
#include<string>
using namespace std;
string dashujia(string s1,string s2)
{
string s;
int max1,max2;
int i=1;
int l;
int temp=0;
int minlen;
if(s1==""&&s2=="")
return 0;
if(s1=="")
return s2;
if(s2=="")
return s1;
max1=s1.length();
max2=s2.length();
minlen=(max1<max2?max1:max2);
s=(max1<max2?s2:s1);
l=s.length();
for(;i<=minlen;++i)
{
s[l-i]=((s1[max1-i]-'0')+(s2[max2-i]-'0'))%10+temp+'0';
temp=(((s1[max1-i]-'0')+(s2[max2-i]-'0'))+temp)/10;
}
s[l-i]=((s[l-i]-'0')+temp)%10+'0';
s[l-i-1]=(s[l-i-1]-'0')+((s[l-i]-'0')+temp)/10+'0';
cout<<s<<endl;
}
int main()
{
dashujia("4444444444444","12345678909876543");
}
------解决方案--------------------
进位问题,进到最后的时候可能产生连续进位,你只处理了一次
#include<iostream>
#include<string>
using namespace std;
string dashujia(string s1,string s2)
{
string s;
int max1,max2;
int i=1;
int l;
int temp=0;
int minlen;
if(s1==""&&s2=="")
return 0;
if(s1=="")
return s2;
if(s2=="")
return s1;
max1=s1.length();
max2=s2.length();
minlen=(max1<max2?max1:max2);
s=(max1<max2?s2:s1);
l=s.length();
for(;i<=minlen;++i)
{
s[l-i]=((s1[max1-i]-'0')+(s2[max2-i]-'0'))%10+temp+'0';
temp=(((s1[max1-i]-'0')+(s2[max2-i]-'0'))+temp)/10;
}
s[l-i]=((s[l-i]-'0')+temp)%10+'0';
s[l-i-1]=(s[l-i-1]-'0')+((s[l-i]-'0')+temp)/10+'0';
cout<<s<<endl;
}
int main()
{
dashujia("4444444444444","12345678909876543");
}
------解决方案--------------------
进位问题,进到最后的时候可能产生连续进位,你只处理了一次