Pagini recente » Cod sursa (job #1102354) | Cod sursa (job #2295948) | Cod sursa (job #2539721) | Cod sursa (job #3133533) | Cod sursa (job #358765)
Cod sursa(job #358765)
#include <string>
#include <sstream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
/*
*
*/
using namespace std;
ifstream in;
ofstream out;
typedef string::const_reverse_iterator const_iter;
class BigNumber
{
string number;
public: //overloading the operators
friend inline istream& operator>>( istream&, BigNumber& ); //for reading a BigNumber
friend inline ostream& operator<<( ostream&, BigNumber ); //for outputing a BigNumber
BigNumber operator+( BigNumber );
};
inline istream& operator>>( istream& in, BigNumber& a )
{
in>>a.number;
return in;
}
inline ostream& operator<<( ostream& out, BigNumber a )
{
out<<a.number<<'\n';
return out;
}
BigNumber BigNumber::operator+( BigNumber a )
{
ostringstream s;
int sum, t=0;
const_iter it=number.rbegin(), it2=a.number.rbegin(), iend=number.rend(), iend2=a.number.rend();
for( ; it < iend && it2 < iend2; ++it, ++it2 )
{
sum=*it-'0'+*it2-'0'+t;
t=sum/10;
s<<(sum%10);
}
for( ; it < iend; ++it )
{
sum=*it-'0'+t;
t=sum/10;
s<<(sum%10);
}
if( t )
s<<t,t=0;
for( ; it2 < iend2; ++it2 )
{
sum=*it2-'0'+t;
t=sum/10;
s<<(sum%10);
}
if( t )
s<<t,t=0;
BigNumber su;
su.number=s.str();
reverse( su.number.begin(), su.number.end() );
return su;
}
int main()
{BigNumber a,b;
in.open( "adunare.in" );
in>>a>>b;
out.open( "adunare.out" );
out<<(a+b);
return 0;
}