KY79 浮点数加法
一道写了一晚上的题目
一些每次改错只改一个的痛苦
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1,s2;
while(cin>>s1){
cin>>s2;
int a[100];
int b[100];
int result1[100]={0},result2[100]={0};
int indexa,indexb;
for(int i=0;i<s1.size();i++){
if(s1[i]=='.')
indexa=i;
}
for(int i=0;i<s2.size();i++){
if(s2[i]=='.')
indexb=i;
}
int i,j;
int k=0;
for(i=s1.size()-1,j=s2.size()-1;i>indexa&&j>indexb;i--,j--){
while(i-indexa>j-indexb){
result2[k]=s1[i]-'0';
i--;
k++;
}
while(i-indexa<j-indexb){
result2[k]=s2[j]-'0';
j--;
k++;
}
result2[k]+=s1[i]-'0'+s2[j]-'0';
// cout<<result2[k]<<endl;
if(result2[k]>=10){
//cout<<k<<endl;
//cout<<max(s1.size()-1-indexa,s2.size()-1-indexb)<<endl;
if(k==max(s1.size()-1-indexa,s2.size()-1-indexb)-1){
result1[0]+=1;
result2[k]=result2[k]%10;
k++;
continue;
}
result2[k]=result2[k]%10;
result2[++k]+=1;
continue;
}
k++;
}
//cout<<k<<endl;
//cout<<result1[0]<<endl;
if(result2[k]==0) k--;
int xiao=k;
k=0;
for(i=indexa-1,j=indexb-1;i>=0&&j>=0;i--,j--){
result1[k]+=s1[i]-'0'+s2[j]-'0';
//cout<<result1[k]<<endl;
if(result1[k]>=10){
result1[k]=result1[k]%10;
result1[++k]+=1;
continue;
}
k++;
}
while(i>=0){
result1[k]+=s1[i]-'0';
//cout<<result1[k]<<endl;
i--;
k++;
}
while(j>=0){
result1[k]+=s2[j]-'0';
j--;
k++;
}
if(result1[k]==0) k--;
int zheng=k;
for(int m=zheng;m>=0;m--){
cout<<result1[m];
}
cout<<'.';
for(int m=xiao;m>=0;m--){
cout<<result2[m];
}
}
}