silviubogan

Problema 5 (până acum)

Feb 5th, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int* suma(int a[], int b[], int max, bool &incaOCifra) {
  5.     int s[50];
  6.     int t = 0;
  7.     for (int i = max - 1; i >= 0; i--) {
  8.         int suma = a[i] + b[i] + t;
  9.         s[i] = suma % 10;
  10.         t = suma / 10;
  11.     }
  12.     if (t) {
  13.         s[max] = t;
  14.         incaOCifra = true;
  15.     }
  16.     return s;
  17. }
  18.  
  19. int main() {
  20.     int a[50], b[50], n, m, *s, d[50];
  21.  
  22.     char aa[51], bb[51];
  23.     cout << "a = "; cin >> aa; n = strlen(aa);
  24.     cout << "b = "; cin >> bb; m = strlen(bb);
  25.  
  26.     int max = n >= m ? n : m;
  27.     for (int i = 0; i < max; i++) {
  28.         a[i] = 0;
  29.         b[i] = 0;
  30.     }
  31.     for (int i = 0; i < n; i++) {
  32.         a[max - n + i] = aa[i] - '0';
  33.     }
  34.     for (int i = 0; i < m; i++) {
  35.         b[max - m + i] = bb[i] - '0';
  36.     }
  37.  
  38.     cout << "a = ";
  39.     for (int i = max - n; i < max; i++) {
  40.         cout << a[i];
  41.     }
  42.     cout << endl << "b = ";
  43.     for (int i = max - m; i < max; i++) {
  44.         cout << b[i];
  45.     }
  46.  
  47.     // Adunare:
  48.     bool incaOCifra = false;
  49.     s = suma(a, b, max, incaOCifra);
  50.    
  51.     cout << endl << "a + b = ";
  52.     if (incaOCifra) {
  53.         cout << s[max];
  54.     }
  55.     for (int i = 0; i < max; i++) {
  56.         cout << s[i];
  57.     }
  58.  
  59.     // Scadere:
  60.     for (int i = max - 1; i >= 0; i--) {
  61.         int dif = a[i] - b[i];
  62.         if (dif < 0) {
  63.             a[i - 1]--;
  64.             d[i] = 10 + dif;
  65.         }
  66.         else {
  67.             d[i] = dif;
  68.         }
  69.     }
  70.  
  71.     cout << endl << "a - b = ";
  72.     int i = 0;
  73.     while (d[i] == 0) {
  74.         i++;
  75.     }
  76.     for (; i < max; i++) {
  77.         cout << d[i];
  78.     }
  79.     cout << endl;
  80.     cin >> n;
  81.  
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment