Advertisement
Glenpl

adding two strings as numbers

Mar 6th, 2015
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. string remove_zeroes(string a)
  6. {
  7.     string b;
  8.     int length = a.length();
  9.     int n_zero_pos = length;
  10.     for(int i = 0; i < length; i++)
  11.         if(a[i] != '0')
  12.         {
  13.             n_zero_pos = i;
  14.             break;
  15.         }
  16.     if(n_zero_pos == length) return "0";
  17.  
  18.     for(int i = n_zero_pos; i < length; i++)
  19.         b += a[i];
  20.     return b;
  21. }
  22.  
  23. string adding(string, string);
  24. string str_reverse(string a)
  25. {
  26.     string b;
  27.     for(int i = a.length()-1; i >= 0; i--)
  28.         b += a[i];
  29.     return  b;
  30. }
  31.  
  32. int main()
  33. {
  34.     cout << adding("999", "11764") << endl;
  35.     return 0;
  36. }
  37.  
  38. string adding(string a, string b)
  39. {
  40.     int length = max(a.length(), b.length());
  41.     a = str_reverse(a);
  42.     b = str_reverse(b);
  43.     if(a.length() != b.length())
  44.         ((a.length() > b.length()) ? (b) : (a)).resize(length, '0');
  45.     string c;
  46.     c.resize(length + 1);
  47.  
  48.     for(int i = 0; i < length; i++)
  49.         c[i] = a[i] - '0' + b[i];
  50.  
  51.     for(int i = 0; i < length; i++)
  52.         if(c[i] > '9')
  53.         {
  54.             c[i] -= 10;
  55.             c[i+1]++;
  56.         }
  57.     c[length] += '0';
  58.     return remove_zeroes(str_reverse(c));
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement