#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
vector<int>bit1,bit2;
string input1,input2;
int length1,length2,tmp;
bool flag=0,next=0; //預先判斷要不要進位;下一次進算時把進位的數字加上去
cout<<"輸入第一個數字"<<endl;
cin>>input1;
cout<<"輸入第二個數字"<<endl;
cin>>input2;
for(int i=0;i<=input1.length()-1;i++) //把string的char一個一個存成int
bit1.push_back(input1[i]-'0');
for(int j=0;j<=input2.length()-1;j++)
bit2.push_back(input2[j]-'0');
length1=input1.length()-1;
length2=input2.length()-1;
if(length1>=length2) //當第1個字串大於第2個字串時
while(1)
{
if(length2==-1)
{
bit1[length1]=(bit1[length1]+next)%10;
if(next==1)
{
bit1.push_back(next);
for(int k=0;k<=input1.length();k++)
{
tmp=bit1[k];
bit1[k]=bit1[input1.length()];
bit1[input1.length()]=tmp;
}
}
break;
}
if((bit1[length1]+bit2[length2])>=10)
flag=1;
bit1[length1]=(bit1[length1]+bit2[length2])%10+next;
next=flag;
flag=0;
length1--;
length2--;
}
else //當第2個字串大於第1個字串時
while(1)
{
if(length1==-1)
{
bit2[length2]=(bit2[length2]+next)%10;
if(next==1)
{
bit2.push_back(next);
for(int k=0;k<=input2.length();k++)
{
tmp=bit2[k];
bit2[k]=bit2[input2.length()];
bit2[input2.length()]=tmp;
}
}
break;
}
if((bit1[length1]+bit2[length2])>=10)
flag=1;
bit2[length2]=(bit1[length1]+bit2[length2])%10+next;
next=flag;
flag=0;
length1--;
length2--;
}
if(input1.length() >= input2.length())
{
if(next==1)
for(int i=0;i<=input1.length();i++)
cout<<bit1[i];
else
for(int i=0;i<=input1.length()-1;i++)
cout<<bit1[i];
}
else
{
if(next==1)
for(int i=0;i<=input1.length();i++)
cout<<bit1[i];
else
for(int i=0;i<=input1.length()-1;i++)
cout<<bit1[i];
}
cout<<endl;
return 0;
}
沒有留言:
張貼留言