Advertisement
barbos01

cripto

Oct 10th, 2021
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.20 KB | None | 0 0
  1. #include <string.h>
  2. #include <iostream>
  3. #include <fstream>
  4. #include <string>
  5. using namespace std;
  6.  
  7. void afisare(int vector[201]) {
  8.     for (int i = vector[0]; i > 0; i--)
  9.         cout << vector[i];
  10. }
  11.  
  12. void suma(int numar1[201], int numar2[201], int suma_mare[201]) {
  13.  
  14.     int transport = 0, n;
  15.     if (numar1[0] < numar2[0]) {
  16.         n = numar2[0];
  17.         for (int i = numar1[0] + 1; i <= numar2[0]; i++)
  18.             numar1[i] = 0;
  19.     }
  20.     else {
  21.         n = numar1[0];
  22.         for (int i = numar2[0] + 1; i <= numar1[0]; i++)
  23.             numar2[i] = 0;
  24.     }
  25.     int i;
  26.     for (i = 1; i <= n; i++) {
  27.         int cifra = numar1[i] + numar2[i] + transport;
  28.         suma_mare[i] = cifra % 10;
  29.         transport = cifra / 10;
  30.     }
  31.     if (transport)
  32.         suma_mare[i] = transport;
  33.     else
  34.         i--;
  35.     suma_mare[0] = i;
  36.     afisare(suma_mare);
  37. }
  38.  
  39. void diferenta(int numar1[201], int numar2[201], int diferenta_mare[201]) {
  40.     if (numar1[0] < numar2[0])
  41.         diferenta(numar2, numar1, diferenta_mare);
  42.     else {
  43.         int i, t = 0;
  44.         for (i = 1; i <= numar1[0]; i++) {
  45.             diferenta_mare[i] = numar1[i] - numar2[i] + t;
  46.             if (diferenta_mare[i] < 0) {
  47.                 diferenta_mare[i] += 10;
  48.                 t = -1;
  49.             }
  50.             else
  51.                 t = 0;
  52.         }
  53.         i--;
  54.         while (i && !diferenta_mare[i])
  55.             i--;
  56.         if (i == 0) {
  57.             printf("0");
  58.         }
  59.         else {
  60.             diferenta_mare[0] = i;
  61.            
  62.             afisare(diferenta_mare);
  63.         }
  64.     }
  65. }
  66.  
  67. void inmultire(int a[200], int numar) {
  68.     if (numar == 0) {
  69.         cout << "0";
  70.         exit(0);
  71.     }
  72.     int i, t = 0;
  73.     for (i = 1; i <= a[0]; i++) {
  74.         a[i] = a[i] * numar + t;
  75.         t = a[i] / 10;
  76.         a[i] = a[i] % 10;
  77.     }
  78.     while (t) {
  79.         a[++a[0]] = t % 10;
  80.         t /= 10;
  81.     }
  82.     afisare(a);
  83.     cout << "\n";
  84. }
  85.  
  86. int main()
  87. {
  88.     int a[200] = { 0 }, b[200] = { 0 }, sumanr[200] = { 0 }, diferentanr[200] = { 0 }, scalar;
  89.     string nr1, nr2, scalar1;
  90.     ifstream f("numar_mare.txt");
  91.     getline(f, nr1);
  92.     getline(f, nr2);
  93.     getline(f, scalar1);
  94.     a[0] = nr1.length();
  95.     b[0] = nr2.length();
  96.     scalar = stoi(scalar1);
  97.     for (int i = nr1.length() - 1; i >= 0; i--)
  98.     {
  99.         a[nr1.length() - i] = (int)(nr1[i] - '0');
  100.     }
  101.     for (int i = nr2.length() - 1; i >= 0; i--)
  102.     {
  103.         b[nr2.length() - i] = (int)(nr2[i] - '0');
  104.     }
  105.     suma(a, b, sumanr);
  106.     cout << "\n";
  107.     diferenta(a, b, diferentanr);
  108.     cout << "\n";
  109.     inmultire(a, scalar);
  110.  
  111.  
  112. }
  113.  
  114.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement