主题:编了一个程序是求大数和大数减的,但是不能求大数减,哪位高手帮一下忙,谢谢
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void complex(string& s)
{
int i;
for(i=0;i<s.length();i++)
s[i]='9'-s[i]+'0';
for(i=s.length()-1;i>=0;i--)
{
if(s[i]=='9')s[i]='0';
else {s[i]++;break;}
}
}
void add(string& a,const string& s)
{
int temp=0;
for(int i=0,j=s.length()-1;j>=0||temp;i++,j--)
{
temp+=a[i]-'0'+(j>=0?s[j]-'0':0);
a[i]=temp%10+'0';
temp/=10;
}
}
const int BitNum=205;
void main()
{
for(int num;cin>>num && num;)
{
string a(BitNum,'0');
for(string s;cin>>s && num--;)
{
if(s[0]=='-')
{
s=s.substr(1);
s=string(BitNum-s.length(),'0')+s;
complex(s);
}
else
s=string(BitNum-s.length(),'0')+s;
add(a,s);
}
reverse(a.begin(),a.end());
if(a[0]=='9')
{
complex(a);
cout<<'-';
}
int pos=a.find_first_not_of('0');
if(pos==string::npos)cout<<"0\n";
else cout<<a.substr(pos)<<endl;
}
#include<string>
#include<algorithm>
using namespace std;
void complex(string& s)
{
int i;
for(i=0;i<s.length();i++)
s[i]='9'-s[i]+'0';
for(i=s.length()-1;i>=0;i--)
{
if(s[i]=='9')s[i]='0';
else {s[i]++;break;}
}
}
void add(string& a,const string& s)
{
int temp=0;
for(int i=0,j=s.length()-1;j>=0||temp;i++,j--)
{
temp+=a[i]-'0'+(j>=0?s[j]-'0':0);
a[i]=temp%10+'0';
temp/=10;
}
}
const int BitNum=205;
void main()
{
for(int num;cin>>num && num;)
{
string a(BitNum,'0');
for(string s;cin>>s && num--;)
{
if(s[0]=='-')
{
s=s.substr(1);
s=string(BitNum-s.length(),'0')+s;
complex(s);
}
else
s=string(BitNum-s.length(),'0')+s;
add(a,s);
}
reverse(a.begin(),a.end());
if(a[0]=='9')
{
complex(a);
cout<<'-';
}
int pos=a.find_first_not_of('0');
if(pos==string::npos)cout<<"0\n";
else cout<<a.substr(pos)<<endl;
}
}
一旦输入负数,程序就运行不下去。