Pagini recente » Cod sursa (job #2516580) | Cod sursa (job #667588) | Cod sursa (job #1637401) | Cod sursa (job #1691130) | Cod sursa (job #358385)
Cod sursa(job #358385)
#include <string>
#include <fstream>
#include <cstdlib>
/*
*
*/
using namespace std;
ifstream in;
ofstream out;
class BigNumber
{
string Number;
public:
BigNumber operator+( BigNumber );
BigNumber operator-( BigNumber );
BigNumber operator*( BigNumber );
BigNumber operator/( BigNumber );
inline void push( istream& );
inline void output( ostream& );
};
BigNumber BigNumber::operator+( BigNumber Number1 )
{BigNumber s;
long t=0,sum;
string::const_reverse_iterator it=Number.rbegin(), it2=Number1.Number.rbegin(), iend=Number.rend(), iend2=Number1.Number.rend();
while( it < iend && it2 < iend2 )
{
sum=*it-'0'+*it2-'0'+t;
if( sum > 9 )
t=sum/10, sum%=10;
else t=0;
s.Number.push_back( sum+'0' );
++it; ++it2;
}
while( it < iend )
{
sum=*it-'0'+t;
if( sum > 9 )
t=sum/10, sum%=10;
else t=0;
s.Number.push_back( sum+'0' );
++it;
}
while( it2 < iend2 )
{
sum=*it2-'0'+t;
if( sum > 9 )
t=sum/10, sum%=10;
else t=0;
s.Number.push_back( sum+'0' );
++it2;
}
reverse( s.Number.begin(), s.Number.end() );
return s;
}
inline void BigNumber::push( istream& in )
{
in>>Number;
}
inline void BigNumber::output( ostream& out )
{
out<<Number;
}
int main()
{BigNumber a,b;
in.open("adunare.in");
a.push(in); b.push(in);
out.open("adunare.out");
a=a+b;
a.output(out);
return EXIT_SUCCESS;
}