#include <iostream> #include <algorithm> #include <string> using namespace std; string add(string a,string b,int length); int main() { string a,b; while(cin >>a>>b){ if (a.find('.') == a.npos) a += '.'; if (b.find('.') == b.npos) b += '.'; int x1 = a.find('.'); int x2 = b.find('.'); while (x1 < x2) { a = '0' + a; x1++; } while (x2 < x1) { b = '0' + b; x2++; } while (a.size() < b.size()) a += "0"; while (b.size() < a.size()) b += "0"; string str; str=add(a,b,a.length()-1); int flag=0; int len=str.length(); if(str.find('.')==str.npos){ cout <<str<<endl; } else{ while(str[len-1]!='.'){ if(str[len-1]!='0'){ flag=1; break; } len--; } if(flag==0){ cout << str.substr(0,str.find('.'))<<endl; } else{ cout <<str.substr(0,len)<<endl; } } } return 0; } string add(string a,string b,int length){ string str; int flag=0; while(length>=0){ if(a[length]=='.'){ str="."+str; length--; continue; } int sum=(a[length]-'0')+(b[length]-'0'); if(flag==1){ sum++; flag=0; } if(sum>=10){ sum-=10; flag=1; } char h; sprintf(&h,"%d",sum); str=h+str; length--; } if(flag==1){ str="1"+str; } return str; } |
Double click to view unformatted code.