Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- const int dim = 2019;
- void citeste( int *A, int *B )
- {
- int i, n, k;
- ifstream f( "date.in" );
- string nr1, nr2;
- f >> nr1 >> nr2;
- n = nr1.size();
- A[ 0 ] = n;
- k = 1;
- for( i = n - 1; i >= 0; --i )
- {
- A[ k ] = nr1[ i ] - '0';
- ++k;
- }
- n = nr2.size();
- B[ 0 ] = n;
- k = 1;
- for( i = n - 1; i >= 0; --i )
- {
- B[ k ] = nr2[ i ] - '0';
- ++k;
- }
- f.close();
- }
- void afiseaza( int *X )
- {
- for( int i = X[ 0 ]; i > 0; --i )
- cout << X[ i ];
- cout << endl;
- }
- int* aduna( int *A, int *B )
- {
- int i, s, mn, mx;
- int *C = new int[ dim ];
- mn = min( A[ 0 ], B[ 0 ] );
- mx = max( A[ 0 ], B[ 0 ] );
- s = 0;
- for( i = 1; i <= mn; ++i )
- {
- cout << "s = " << s << endl;
- cout << A[ i ] << " + " << B[ i ] << endl;
- s = s + A[ i ] + B[ i ];
- if( s > 9 )
- C[ i ] = s - 10, s = s / 10;
- else
- C[ i ] = s, s = 0;
- cout << "s = " << s << endl;
- cin.get();
- }
- for( i = mn + 1; i <= mx; ++i )
- {
- cout << "s = " << s << endl;
- cout << A[ i ] << " + " << B[ i ] << endl;
- s = s + A[ i ] + B[ i ];
- if( s > 9 )
- C[ i ] = s - 10, s = s / 10;
- else
- C[ i ] = s, s = 0;
- cout << "s = " << s << endl;
- cin.get();
- }
- cout << "i = " << i << endl;
- cout << "s = " << s << endl;
- C[ 0 ] = mx;
- if( s > 0 )
- C[ mx + 1 ] = s, C[ 0 ] = mx + 1;
- return C;
- }
- int* inmulteste( int *A, int *B )
- {
- int *C = new int[ dim ], i, j, k, transp = 0;
- C[ 0 ] = A[ 0 ] + B[ 0 ] - 1;
- for( i = 1; i <= C[ 0 ]; ++i )
- C[ i ] = 0;
- cout << "Dimensiunea initiala a vct produs: " << C[ 0 ] << endl;
- cin.get();
- /// Fac inmultirea obisnuita si apoi mai reparcurg inca o data, pentru a duce transportul
- /// si a avea cate o cifra
- k = 1;
- for( i = 1; i <= A[ 0 ]; ++i )
- for( j = 1; j <= B[ 0 ]; ++j )
- C[ k ] = A[ i ] * B[ j ], cout << C[ k ] << " ", ++k ;
- cout << "Am terminat prima faza a inm" << endl;
- cin.get();
- for( i = 1; i <= C[ 0 ]; ++i )
- ///if( C[ i ] > 9 )
- {
- cout << "Inainte, C[ " << i << "] = " << C[ i ] << endl;
- transp = transp + C[ i ];
- C[ i ] = transp % 10;
- transp = transp / 10;
- cout << "Dupa, C[ " << i << "] = " << C[ i ] << endl;
- cout << "Dupa, transp = " << transp << endl << endl;
- }
- //else
- // C[ i ] = transp, transp = 0;
- if( transp > 0 )
- ++C[ 0 ], C[ i ] = transp; /// i, dupa ultimul for are exact valoarea indicelui pozitiei noi.
- return C;
- }
- int main()
- {
- int *A, *B, *C, *D;
- A = new int[ dim ];
- B = new int[ dim ];
- citeste( A, B );
- afiseaza( A );
- afiseaza( B );
- C = aduna( A, B );
- afiseaza( C );
- D = inmulteste( A, B );
- afiseaza( D );
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement