Cod sursa(job #358582)

Utilizator alexandru92alexandru alexandru92 Data 23 octombrie 2009 19:38:30
Problema A+B Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <string>
#include <sstream>
#include <fstream>
#include <cstdlib>
#include <iterator>

/*
 *
 */
 using namespace std;
 ifstream in;
 ofstream out;
 typedef string::const_reverse_iterator iter;
 string accumulation( iter it, iter it2 , iter iend, iter iend2 )
 {
     ostringstream s;
     int sum, t=0;
        while( it < iend && it2 < iend2 )
        {
            sum=*it-'0'+*it2-'0'+t;
            if( sum > 9 )
              t=sum/10, sum%=10;
            else t=0;
            s<<sum;
            ++it; ++it2;
        }
        while( it < iend )
        {
            sum=*it-'0'+t;
            if( sum > 9 )
              t=sum/10, sum%=10;
            else t=0;
            s<<sum;
            ++it;
        }
        if( t )
          s.put( t+'0' ), t=0;
        while( it2 < iend2 )
        {
            sum=*it2-'0'+t;
            if( sum > 9 )
              t=sum/10, sum%=10;
            else t=0;
            s<<sum;
            ++it2;
        }
        if( t )
          s<<t, t=0;
    return s.str();
 }

 int main()
 {string a,b,s;
     in.open("adunare.in");
     in>>a>>b;
     out.open("adunare.out");
     s=accumulation( a.rbegin(), b.rbegin(), a.rend(), b.rend() );
     copy( s.rbegin(), s.rend(), ostream_iterator<char>( out ) );
     return EXIT_SUCCESS;
 }